18

ListView.invalidateViews()和有什么区别Adapter.notifyDataSetChanged()吗?

4

1 回答 1

39

是的,有。

ListView.invalidateViews()用于告诉 ListView 使其所有子项视图无效(重绘它们)。 请注意,视图数不必与项目数相等。这是因为 ListView 会回收其项目视图并在您滚动时以智能的方式在屏幕上移动它们。

Adapter.notifyDataSetChanged()另一方面,是告诉适配器的观察者正在适配的内容发生了变化。通知数据集更改将导致列表视图再次调用您的适配器方法来调整滚动条、重新生成项目视图等...

大多数情况下,您会想使用notifyDataSetChanged而不是invalidateViews,但这当然取决于您要完成的工作。

于 2012-05-20T20:01:48.670 回答