【问题标题】:Getting the ListView to reload it's Views让 ListView 重新加载它的视图
【发布时间】:2012-07-25 02:38:22
【问题描述】:

情况:
我有一个带有微调器的活动和一个带有BaseAdapter 的列表。

列表加载一次,并正确显示...但是当我单击微调器更改基础数据并调用 adapter.notifyDataSetChanged(); 时,列表不会刷新。

我的意思是数据改变了,适配器有正确的数据,只是listView没有改变视图。

如何强制 listViews 显示正确的数据?

【问题讨论】:

  • 在调用 notifyDataSetChanged() 之后,您应该会看到每个可见行都调用了适配器 getView()。如果您使用“contentView”而不重置值,除非滚动,否则您不会看到值更新。

标签: android listview reload


【解决方案1】:

试试adapter.notifyDataSetInvalidated();adapter.notifyDataSetChanged();


编辑: 在使用 .clear(); 等添加更多项目之前清除您的 ArrayList 或您正在使用的任何内容,然后添加新项目并调用 adapter.notifyDataSetChanged();

【讨论】:

  • 只有 notifyDataSetChanged() 才是真正需要的
  • 刚试过这不起作用,我得到旧列表+随机(?)插入的行。不是很明白这背后的逻辑。而且只是 notifyDataSetChanged() 根本没有改变任何东西。
  • 如果我这样做为什么它不起作用profil_array = new ArrayList();而不是 profil_array.clear() ?
  • 不看源码就不知道了。现在可以用了吗?
  • 代码很多,今天没时间发,明天我会编辑第一篇,贴上相关部分,感谢批评,因为我认为我可能弄错了“大局”。
【解决方案2】:

试试

myListView.invalidateViews();

【讨论】:

  • 这与托德戴维斯的答案相同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-17
  • 1970-01-01
  • 2018-11-29
  • 2014-05-18
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
相关资源
最近更新 更多