在相同的活动布局上,我有一个TextView字段和一个ListView,每个项目都有一个按钮。在我的ListView数组适配器中,我在getView()方法中有一个按钮单击侦听器,我试图“动态”更新上面提到的TextView字段的值。
到目前为止,我已经能够在膨胀的实例的帮助下更新TextView值,但是当我通过从主菜单重新访问活动页面来刷新页面时,我只能看到更新的TextView。
作为最后一个解决方案,我已将其设置为在getView()方法内的buton侦听器内重新启动活动页面,而无需手动执行。这不是最好的方法,因为用户每次点击ListView项目按钮都可以看到页面重新加载。
请告诉我如何动态更新价值?
以下是我的适配器类代码:
public adapter( Context context, int resource, ArrayList<value> objects )
{
super( context, resource, objects );
layout = resource;
array = objects;
}
@Override
public View getView( final int position, View convertView, final ViewGroup parent )
{
box = null;
db = new database( getContext() );
if ( convertView == null )
{
LayoutInflater inflater = LayoutInflater.from( getContext() );
convertView = inflater.inflate( layout, null );
box = new holder();
box.X = (TextView) convertView.findViewById( R.id.valueName );
box.Y = (TextView) convertView.findViewById( R.id.valueNumber );
box.button = (Button) convertView.findViewById( R.id.itemDeleteButton );
box.button.setTag( position );
convertView.setTag( box );
}
else
{
box = (holder) convertView.getTag();
}
box.X.setText( getItem( position ).getX() );
box.Y.setText( String.valueOf( getItem( position ).getY()) );
box.button.setOnClickListener( new View.OnClickListener()
{
@Override
public void onClick(View v)
{
View view = View.inflate( getContext(), R.layout.activity_plan, null );
list = (ListView) view.findViewById( R.id.listView );
month = (Spinner) view.findViewById( R.id.inputSpinner );
remainder = (TextView) view.findViewById( R.id.outputRemainder );
adapt = new adapter( getContext(), R.layout.activity_item, array );
array.remove( position );
month_is = month.getSelectedItem().toString();
db.removePlanData( month_is, position + 1 );
notifyDataSetChanged();
cursor = db.getHelpDataRows(month_is);
cursor.moveToFirst();
val_is = Integer.parseInt(cursor.getString(cursor.getColumnIndex("value")));
remainder_is = val_is - db.getCurrent(month_is);
remainder.setText( String.valueOf(remainder_is) );
// RESTARTING ACTIVITY TO SEE THE UPDATED TEXTVIEW VALUE OUTSIDE LISTVIEW.
Intent intent= new Intent( getContext(), plan.class );
getContext().startActivity( intent );
}
});
return convertView;
}
public class holder
{
TextView X;
TextView Y;
Button button;
}
答案 0 :(得分:0)
首先,如果你写一个以大写字母开头的类名会更好。接下来,根据我的理解,您的情况是:当您单击listView
项目上的按钮时,您应该能够在listView之外更改textView的文本。可以通过在您的活动中设置textView
public static
来完成此操作,以便您可以从其他类访问。例如:
MainActivity.textView.setText("something");
在您的主要活动中制作textView public static
:
public static TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viloyatlat_frame);
textView = (TextView)findViewById(R.id.textView);
}