Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android setHassTableId(true)为什么在RecyclerView中默认不启用它?_Android_Performance_Android Recyclerview - Fatal编程技术网

Android setHassTableId(true)为什么在RecyclerView中默认不启用它?

Android setHassTableId(true)为什么在RecyclerView中默认不启用它?,android,performance,android-recyclerview,Android,Performance,Android Recyclerview,我可以看到设置适配器 setHasStableIds(true) 将提高RecyclerView性能,因为它提高了很多性能,为什么在RecyclerView中没有默认启用它,在设置setHassTableId(true)时是否有任何限制?原因是当我们只在recycler视图中显示数据时,不需要每个项目的唯一id,也不需要动画。因此它的默认值为false 但是,当我们要在数据集中执行某些操作并更新回收器视图时,这种情况下它需要特定项目的唯一id和刷新动画(闪烁)它需要。因此我们将其设置为true之

我可以看到设置适配器

setHasStableIds(true)


将提高RecyclerView性能,因为它提高了很多性能,为什么在
RecyclerView
中没有默认启用它,在设置
setHassTableId(true)时是否有任何限制

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


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

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

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

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

如果使用类似于
CursorAdapter
的东西,则此自动程序具有稳定的Id,因为它使用数据库表Id列