首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果可以的话,使用更具体的更改事件总是更有效。依靠notifyDataSetChanged作为最后的手段。RecycleView

如果可以的话,使用更具体的更改事件总是更有效。依靠notifyDataSetChanged作为最后的手段。RecycleView
EN

Stack Overflow用户
提问于 2021-07-31 12:33:01
回答 3查看 21.3K关注 0票数 44

在将android演播室升级为北极狐后,我收到了这个警告。但我不知道什么是通知数据更改的有效方式。在我的代码中,我从网络调用中填充适配器,然后通知from,但编译器给了我以下内容:

如果可以的话,使用更具体的更改事件总是更有效。依靠notifyDataSetChanged作为最后的手段。RecycleView

编辑问题:想让我们使用

DiffUtil文档

而不是notifyDataSetChanged(),因为它要快得多。在5~6成熟上查看这篇文章。

EN

回答 3

Stack Overflow用户

发布于 2021-07-31 17:40:38

这意味着,如果您需要立即更改整个项目列表在回收视图,然后使用notifyDataSetChanged()

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

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

票数 51
EN

Stack Overflow用户

发布于 2021-08-12 09:40:51

函数notifyDataSetChanged本质上考虑了数据集中的所有数据已经更改。这将导致重新绘制使用此数据的所有VISIBLE视图。当只有一些数据发生更改时,这是不必要的。

您需要标识数据已更改的位置,并通知适配器只更新这些项。

您可以使用此方法通知特定位置的更改。

  1. notifyItemChanged(int)
  2. notifyItemInserted(int)
  3. notifyItemRemoved(int)
  4. notifyItemRangeChanged(int,int)
  5. notifyItemRangeInserted(int,int)
  6. notifyItemRangeRemoved(int,int)
票数 25
EN

Stack Overflow用户

发布于 2021-10-11 06:48:02

这只是安卓工作室的一个建议,更新RecyclerView中的数据。

此建议仅使用特定的位置更新(如,notifyItemChanged(int)、notifyItemInserted(int)、notifyItemRemoved(int)、notifyItemRangeChanged(int、int)、notifyItemRangeInserted(int、int)、notifyItemRangeRemoved(int、int) )通知回收器视图项中的更改。

notifyDataSetChanged()应作为最后的手段或作为最后的行动方针。此函数将再次重新初始化和重新绑定所有视图,从而降低性能。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68602157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档