如何在不调用notifyDataSetChanged的情况下刷新适配器中的数据

时间:2016-03-08 05:31:27

标签: android gridview android-recyclerview recycler-adapter notifydatasetchanged

我使用带有网格视图的循环器视图(每个项目都包含一个网格),在视图中添加图像后开始上传后显示缩略图,我需要在启动时更改模型中的某些值(状态)并完成上传。 我目前正在做的是改变模型中的值并调用notifyDataSetChanged,但它会导致应用程序变慢(挂起一些时间),因为它更新了list的每个子节点:( 任何人都能帮助我吗?

3 个答案:

答案 0 :(得分:1)

我相信notifyDataSetChanged会更新您的所有值,无论它们是否有变化,这都是它变慢的原因。我建议您尝试使用notifyItemChanged(int position)

根据recyclerview docs,这是notifyDataSetChanged的作用:

  

此事件未指定数据集的更改内容,强制任何观察者假定所有现有项目和结构可能不再有效。 LayoutManagers将被迫完全重新绑定并重新布局所有可见视图。

答案 1 :(得分:0)

仅针对特定的Gridview适配器调用notifydatasetchanged()。不要将notifydatasetchanged()调用为完整的recyclerview适配器。

答案 2 :(得分:0)

尝试再次将其设置为适配器。

gridview.setAdapter(你的适配器) - 将新列表传递给适配器。