我可以看到设置适配器。
setHasStableIds(true);
将改善RecyclerView的性能,因为它正在改善很多性能,为什么RecyclerView
中未默认启用它,设置setHasStableIds(true)
时是否有任何限制?
原因是,当我们仅要在回收器视图中显示数据时,这种情况就不需要每个项目的唯一ID,也不需要动画。因此为默认为false。
但是,当我们要在数据集中执行某些操作并更新回收器视图时,它需要特定项目的唯一ID并刷新所需的动画(闪烁)。因此我们将其设置为true
之所以不是默认值,是因为支持适配器的数据可能没有稳定的ID,而RecyclerView不知道这一点。
是,使用setHasStableIds(true)
有一个限制-您的数据必须具有稳定的ID
您要么需要重写getItemId(int position)以返回表示每个数据项的唯一ID,如果您想不出更好的方法,只需返回HashCode。
或
如果使用类似CursorAdapter
的东西,因为它使用数据库表_id列,所以它具有稳定的ID。