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