3

notifyDataSetChanged在类方法的文档中BaseAdapter指出,“通知附加的观察者基础数据已更改,任何反映数据集的视图都应自行刷新。”

假设我更改了字符串数组中的第三个元素(数组数据ListView),“任何反映数据集的视图都应该刷新自身”是什么意思?我的列表视图中的第三个视图项目是否会收到通知?

还有,怎么notifyDataSetChanged()关心getView()

4

1 回答 1

8

假设我更改了字符串数组中的第三个元素(列表视图的数组数据),“任何反映数据集的视图都应该刷新自身”是什么意思?

这意味着任何显示/基于/使用该数据(在您的情况下为字符串数组)的视图都应该无效(重新测量,重新绘制),以便向用户显示新的数据集。

我的列表视图中的第三个视图项目是否会收到通知?

ListView不,会通知家长。当您在 a 上设置适配器时,将为该适配器设置ListView一个观察者(来自ListView)。调用notifyDataSetChanged适配器将宣布ListView数据发生了某些事情的观察者。此时ListView将重新创建行以显示新数据。

另外,notifyDataSetChanged() 和 getView() 有什么关系?

我不确定我是否理解你的要求。每次需要时,getView都会使用适配器的方法来获取新行。ListView当您调用notifyDataSetChanged适配器时,这将触发ListView. 当需要重新创建列表时,ListView将调用getView适配器的方法来显示必要的行数(屏幕上可见的行数)。因此,每次调用notifyDataSetChangedgetView方法时,都会为可见行调用该方法。

于 2012-09-09T09:59:36.553 回答