首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >adapter.setHasStableIds(true)为什么在默认情况下没有在RecyclerView中启用?

adapter.setHasStableIds(true)为什么在默认情况下没有在RecyclerView中启用?
EN

Stack Overflow用户
提问于 2019-11-21 05:46:52
回答 2查看 2K关注 0票数 5

我可以看到设置适配器。

setHasStableIds(真);

将改进RecyclerView性能,因为它提高了许多性能,为什么在RecyclerView中没有默认启用,在设置setHasStableIds(true)时是否有限制?

EN

回答 2

Stack Overflow用户

发布于 2019-11-22 00:32:15

它不是默认的原因是因为支持适配器的数据可能没有稳定的Id,而RecyclerView不知道这一点。

是的,使用setHasStableIds(true)有一个限制--您的数据必须有稳定的Id

您要么需要重写getItemId(int位置)才能返回表示每个数据项的唯一Id,如果您想不出更好的方法,只需返回HashCode。

如果使用类似于CursorAdapter的内容,则自动具有稳定的Id,因为它使用的是数据库表_id列。

票数 2
EN

Stack Overflow用户

发布于 2019-11-21 06:04:53

原因是,当我们将只是显示数据在回收-查看的情况下,不需要每个项目的唯一id和动画所需。所以它是,默认为假

但是,当我们要在数据集中执行一些操作并更新回收器视图时--在这种情况下,它需要特定项目的唯一id和刷新动画(闪烁) it need.so,我们将其设置为true

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

https://stackoverflow.com/questions/58968050

复制
相关文章

相似问题

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