Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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 notifyDataSetChanged()与notifyItemChanged()用于不同的数据大小_Android_Android Recyclerview - Fatal编程技术网

Android notifyDataSetChanged()与notifyItemChanged()用于不同的数据大小

Android notifyDataSetChanged()与notifyItemChanged()用于不同的数据大小,android,android-recyclerview,Android,Android Recyclerview,我有一个简单的RecyclerView,数据集最多有5000个项目 用户只需单击一个简单的按钮,即可选择项目并更新其数据 问题: 如果用户仅选择几个项目,则对每个项目调用notifyItemChanged()似乎比调用notifyDataSetChanged()更有效 另一方面,如果用户从5000项中选择了4000项,那么调用notifydatasetchange()比调用每个项的notifyItemChanged()效率要高得多(根据我的基准测试) (notifyItemRangeChan

我有一个简单的
RecyclerView
,数据集最多有5000个项目

用户只需单击一个简单的按钮,即可选择项目并更新其数据

问题

  • 如果用户仅选择几个项目,则对每个项目调用
    notifyItemChanged()
    似乎比调用
    notifyDataSetChanged()
    更有效
  • 另一方面,如果用户从5000项中选择了4000项,那么调用
    notifydatasetchange()
    比调用每个项的
    notifyItemChanged()
    效率要高得多(根据我的基准测试)
notifyItemRangeChanged()
不可能,选择可能根本不连续)

我可以为此优化我的代码吗?显然,我不知道用户将选择多少项。这种情况是否有一种常见的做法


提前感谢。

我认为从优化的角度来看,您可以使用
NotifiItemChanged(int location)
仅在指定/选定的位置进行通知。这比调用notifiyItemChanged()要好得多。因为正如您所知,它将通知所有项目。

我认为从优化角度来看,您可以使用
NotifiItemChanged(int location)
仅在指定/选定的位置进行通知。这比调用notifiyItemChanged()要好得多。因为正如您所知,它会通知所有项目。

我想知道用户能够以多快的速度选择一行,在正常情况下,更改项目会更好。@SarthakMittal无论选择的速度有多快,更新都是重要的操作,只需单击一个按钮。类似于
updateSelectedItems(selectedItems)
。此时将调用notify方法
selectedItems
可以是3个项目,但也可以是3000个项目,这是有问题的部分。我想知道用户能够以多快的速度选择一行,在正常情况下更改项目会更好。@SarthakMittal选择速度有多快并不重要,更新是重要的操作,只需单击一个按钮。类似于
updateSelectedItems(selectedItems)
。此时将调用notify方法
selectedItems
可以是3项,但也可以是3000项,这是有问题的部分。