【问题标题】:adapter.setHasStableIds(true) why it is not enabled by default in RecyclerView?adapter.setHasStableIds(true) 为什么在 RecyclerView 中默认不启用?
【发布时间】:2019-11-21 05:46:52
【问题描述】:

我可以看到设置适配器。

setHasStableIds(true);

将提高 RecyclerView 的性能,因为它提高了很多性能,为什么 RecyclerView 中没有默认启用它,设置 setHasStableIds(true) 时有什么限制吗?

【问题讨论】:

    标签: android performance android-recyclerview


    【解决方案1】:

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

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

    您要么需要覆盖 getItemId(int position) 以返回代表每个数据项的唯一 ID,如果您想不出更好的方法,只需返回 HashCode。

    或者

    如果使用 CursorAdapter 之类的东西,这个自动具有稳定的 ID,因为它使用数据库表 _id 列。

    【讨论】:

      【解决方案2】:

      原因是当我们只在回收视图中显示数据时,不需要每个项目的唯一 ID,也不需要动画。所以它默认为 false

      但是当我们要在数据集中执行一些操作并更新回收器视图时,它需要特定项目的唯一 ID 和刷新动画(闪烁)它需要。所以我们设置为 true

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-06-22
        • 1970-01-01
        • 1970-01-01
        • 2019-04-25
        • 2010-11-24
        • 2011-01-03
        • 1970-01-01
        相关资源
        最近更新 更多