在同一活動佈局上,我有一個TextView字段和一個ListView,每個項目上都有一個按鈕。在我的ListView數組適配器中,我在getView()方法內部有一個按鈕單擊偵聽器,我試圖「動態」更新上面提到的TextView字段的值。如何從ListView按鈕動態更新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;
}
它會是有用的,如果你能證明你的代碼 –
顯示你的代碼。 – Chisko
感謝您的回覆。我已經在下面發佈了我的代碼。這麼晚纔回復很抱歉。我感謝您的幫助! – Ras