notifyDataSetChanged
在类方法的文档中BaseAdapter
指出,“通知附加的观察者基础数据已更改,任何反映数据集的视图都应自行刷新。”
假设我更改了字符串数组中的第三个元素(数组数据ListView
),“任何反映数据集的视图都应该刷新自身”是什么意思?我的列表视图中的第三个视图项目是否会收到通知?
还有,怎么notifyDataSetChanged()
关心getView()
?
notifyDataSetChanged
在类方法的文档中BaseAdapter
指出,“通知附加的观察者基础数据已更改,任何反映数据集的视图都应自行刷新。”
假设我更改了字符串数组中的第三个元素(数组数据ListView
),“任何反映数据集的视图都应该刷新自身”是什么意思?我的列表视图中的第三个视图项目是否会收到通知?
还有,怎么notifyDataSetChanged()
关心getView()
?
假设我更改了字符串数组中的第三个元素(列表视图的数组数据),“任何反映数据集的视图都应该刷新自身”是什么意思?
这意味着任何显示/基于/使用该数据(在您的情况下为字符串数组)的视图都应该无效(重新测量,重新绘制),以便向用户显示新的数据集。
我的列表视图中的第三个视图项目是否会收到通知?
ListView
不,会通知家长。当您在 a 上设置适配器时,将为该适配器设置ListView
一个观察者(来自ListView
)。调用notifyDataSetChanged
适配器将宣布ListView
数据发生了某些事情的观察者。此时ListView
将重新创建行以显示新数据。
另外,notifyDataSetChanged() 和 getView() 有什么关系?
我不确定我是否理解你的要求。每次需要时,getView
都会使用适配器的方法来获取新行。ListView
当您调用notifyDataSetChanged
适配器时,这将触发ListView
. 当需要重新创建列表时,ListView
将调用getView
适配器的方法来显示必要的行数(屏幕上可见的行数)。因此,每次调用notifyDataSetChanged
该getView
方法时,都会为可见行调用该方法。