如果可以,使用更具体的更改事件总是会更有效率。依靠 notifyDataSetChanged 作为最后的手段。回收视图

Mos*_*zan 9 android android-recyclerview android-studio-arctic-fox

将 android studio 更新为 arctic fox 后,我收到此警告。但我不知道通知数据更改的有效方法是什么。在我的代码中,我从网络调用填充适配器,然后我通知数据集更改,但编译器给了我这个:

如果可以,使用更具体的更改事件总是会更有效率。依靠 notifyDataSetChanged 作为最后的手段。回收视图

编辑问题:希望我们使用

DiffUtil文档

而不是 notifyDataSetChanged() 因为它快得多。在媒体上查看这篇文章。

Mit*_*ani 31

该函数notifyDataSetChanged本质上认为数据集中的所有数据都已更改。这会导致VISIBLE使用此数据的所有视图被重新绘制。当只有部分数据发生变化时,这是不必要的。

您需要确定数据发生更改的位置,并通知您的适配器仅更新这些项目。

您可以使用此方法通知特定位置的变化

  1. 通知项目更改(int)
  2. 通知项目已插入(int)
  3. 通知项目已删除(int)
  4. 通知项目范围更改(int,int)
  5. 通知项目范围插入(int,int)
  6. 通知项目范围已删除(int,int)

  • 如果我不知道数据如何变化怎么办?即从互联网上刷新列表?我应该使用哪种方法 (7认同)

Dev*_*ife 15

这意味着如果您需要在 recyclerview 中一次更改整个项目列表,则使用notifyDataSetChanged().

如果您需要更改特定项目,那么最好使用notifyItemChanged(position)它,这样它就不会刷新和重新绑定整个数据集,如果数据集很大,这会影响性能。

所以这只是一个正常的建议或者可能是一个警告,没有什么可担心的。:)