ListView - 滚动期间其视图失去价值

时间:2015-06-25 23:17:23

标签: java android listview

我有一个自定义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();
        }

1 个答案:

答案 0 :(得分:1)

列表适配器将您的数据(称为模型)连接到ListView。此模型必须表示在任何时刻列表中显示的内容

因此,捕获任何用户交互并将其存储在模型中非常重要,这样当ListView重新创建该列表项时,它可以显示该列表项发生的所有更新

当用户点击按钮并修改TextView时,您需要更新MenuItemList对象,然后在适配器上调用notifyDataSetChanged()