`ListView.invalidateViews()`和'Adapter.notifyDataSetChanged()'之间有什么区别吗?

时间:2012-05-20 19:58:48

标签: android android-listview

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

1 个答案:

答案 0 :(得分:39)

是的,有。

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

另一方面,

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

大多数情况下,您希望使用notifyDataSetChanged代替invalidateViews,但这肯定取决于您要完成的工作。