我有一个自定义ListView。使用按钮,TextView等。它附加到片段不活动。用户可以与ListView进行交互,其中按钮文本和TextView会发生变化。
列表视图的问题是,在我向上或向下滚动后,对视图的所有更改都将重置为原始状态。
如何保持ListView不重绘并保留视图值?
PS:在滚动期间启动的唯一事件是ViewRoot的触摸事件:Touch UP&触摸下来
MenuFragment
public ItemsAdapter(Context context, List<MenuListItem> objects, String type, String date, ListView lstView) {
this.ctx = context;
this.listView = lstView;
this.itemsType = type;
this.items = objects;
this.date = date;
inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
ItemsAdapter itemsAdapter = new ItemsAdapter(getActivity(),itemList,itemType, dateOfMenu,lst);
lst.setAdapter(itemsAdapter);
void updateList(List<MenuFragment> newItems)
{
fragments.addAll(newItems);
pager.destroyDrawingCache();
this.notifyDataSetChanged();
indicator.notifyDataSetChanged();
}
答案 0 :(得分:1)
列表适配器将您的数据(称为模型)连接到ListView
。此模型必须表示在任何时刻列表中显示的内容。
因此,捕获任何用户交互并将其存储在模型中非常重要,这样当ListView
重新创建该列表项时,它可以显示该列表项发生的所有更新
当用户点击按钮并修改TextView
时,您需要更新MenuItemList
对象,然后在适配器上调用notifyDataSetChanged()
。