adapter.setHasStableIds(true),为什么默认情况下未在RecyclerView中启用它?

问题描述 投票:2回答:2

我可以看到设置适配器。

setHasStableIds(true);

将改善RecyclerView的性能,因为它正在改善很多性能,为什么RecyclerView中未默认启用它,设置setHasStableIds(true)时是否有任何限制?

android performance android-recyclerview recycler-adapter
2个回答
0
投票

原因是,当我们仅要在回收器视图中显示数据时,这种情况就不需要每个项目的唯一ID,也不需要动画。因此为默认为false

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


0
投票

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

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

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

如果使用类似CursorAdapter的东西,因为它使用数据库表_id列,所以它具有稳定的ID。

© www.soinside.com 2019 - 2024. All rights reserved.