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

标签 android android-listview

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

最佳答案

是的,有。

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

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

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

关于android - `ListView.invalidateViews()` 和 'Adapter.notifyDataSetChanged()' 之间有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10676720/

相关文章:

android - adb.exe 在 Windows 7 上挂起

android - 以编程方式从代码中读取日志并与 Android 应用程序中的字符串匹配

SimpleCursorAdapter 上的安卓过滤器

android - 如何将数据加载到 ListFragment?

android - 恢复自定义阵列适配器中的复选框状态

java - 从firebase数据库中获取数据

android - 三星S3颜色问题

android - 检查摇动手机时是否按下了音量键?

android - 在 Android 中设计 ListView

java - ListView 的 Android 自定义行项目