android的BaseAdapter notifyDataSetChanged方法如何工作?

onm*_*133 3 android notify android-listview android-adapter android-view

notifyDataSetChanged类的方法文档中BaseAdapter指出"通知附加的观察者基础数据已经改变,反映数据集的任何视图都应该刷新自己".

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

此外,如何notifyDataSetChanged()getView()有关?

Luk*_*rog 8

假设我更改了我的字符串数组中的第3个元素(listview的数组数据),"反映数据集的任何视图应该刷新自己"是什么意思?

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

是否会通知列表视图中的第3个视图项?

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

另外,notifyDataSetChanged()和getView()是如何关注的?

我不确定我明白你的要求.每次需要时getView,适配器的方法用于ListView获取新行.当您调用notifyDataSetChanged适配器时,这将触发该中的观察者ListView.由于是时候重新创建列表,因此ListView将调用getView适配器的方法来显示必要的行数(屏幕上可见的行数).因此,每次调用notifyDataSetChangedgetView方法时都会调用可见行.

  • 当我调用notifyDataSetChanged时,有时不会调用getView.这怎么可能? (2认同)