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);