在类notifyDataSetChanged
的方法BaseAdapter
的文档中注意到“通知附加的观察者基础数据已被更改,反映数据集的任何视图都应自行刷新。”
假设我更改了我的字符串数组中的第3个元素(ListView
的数组数据),“反映数据集的任何视图应该刷新自己”意味着什么?是否会通知列表视图中的第3个视图项?
另外,notifyDataSetChanged()
和getView()
的关系如何?
答案 0 :(得分:8)
假设我更改了我的字符串数组中的第3个元素(数组数据为 列表视图),什么“任何反映数据集的视图应该刷新 本身“意味着什么?
这意味着任何显示/基于/使用该数据的视图(在您的情况下为字符串数组)都应该无效(重新测量,重新绘制)以向用户显示新的数据集。
是否会通知列表视图中的第3个视图项?
不,将通知家长ListView
。在ListView
上设置适配器时,将为该适配器设置观察者(来自ListView
)。在适配器上调用notifyDataSetChanged
将通知ListView
观察者数据发生了什么。此时ListView
将重新创建行以显示新数据。
另外,notifyDataSetChanged()和getView()是如何关注的?
我不确定我明白你的要求。每次需要时,getView
都使用适配器的ListView
方法获取新行。当您在适配器上调用notifyDataSetChanged
时,这将触发ListView
中的观察者。由于是时候重新创建列表,ListView
将调用适配器的getView
方法来显示必要的行数(屏幕上可见的行数)。因此,每次调用notifyDataSetChanged
时,都会为可见行调用getView
方法。