我有一个项目列表:List<SomeObject> items
,它映射到要在ListView上显示的适配器。当我为该列表中的特定项目设置新字段并调用adapter.notifyDataSetChanged()
时,列表不会更新。例如,我想通过设置
item.get(position).showDate(true);
adapter.notifyDataSetChanged();
直到我从该行滚动并返回到该视图时才显示视图(我假设是因为回收)。
执行list.setAdapter(adapter);
有效但整个视图都闪烁,应该没有理由重新设置适配器。
如何在不滚动的情况下更新列表?
答案 0 :(得分:0)
你可以使用adapter.getitem(postion)获取SomeObject并刷新它。
SomeObject sobj = (SomeObject)adapter.getItem(position);
sobj .showDate(true);
adapter.notifyDataSetChanged();
答案 1 :(得分:0)
您可以尝试更改适配器中引用的List。将这样的内容添加到适配器:
public void updateData(List<SomeObject> dataItems) {
this.mDataItems = dataItems;
notifyDataSetChanged();
}
然后:
items.get(position).showDate(true);
adapter.updateData(items);