notifiyDataSetChanged()不会使用新字段更新适配器

时间:2015-03-19 23:53:51

标签: android listview notifydatasetchanged

我有一个项目列表:List<SomeObject> items,它映射到要在ListView上显示的适配器。当我为该列表中的特定项目设置新字段并调用adapter.notifyDataSetChanged()时,列表不会更新。例如,我想通过设置

在ListView的特定行中显示日期TextView
item.get(position).showDate(true);
adapter.notifyDataSetChanged();

直到我从该行滚动并返回到该视图时才显示视图(我假设是因为回收)。

执行list.setAdapter(adapter);有效但整个视图都闪烁,应该没有理由重新设置适配器。

如何在不滚动的情况下更新列表?

2 个答案:

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