美文网首页@IT·互联网Android开发
听说你们家的NotifyDataSetChanged不起作用了

听说你们家的NotifyDataSetChanged不起作用了

作者: 代码咖啡 | 来源:发表于2016-09-29 10:55 被阅读303次

背景叨叨叨

前几天,公司项目准备上线,就在前一晚,出现了一个BUG:主页界面刷新无效。千钧一发之际,用了一个笨方法,每次刷新的时候重新setAdapter一下算是实现了基本功能,但是这样显然效率不高,数据很多的时候容易卡顿。当时时间紧也就没有对问题作过多的了解,现在回过头来对NotifyDataSetChanged无效的问题进行分析。

原因分析

查询资料,发现NotifyDataSetChanged无效有两个因素:数据源adapter本身,其问题原因可以总结为如下三点:

1. 数据源未更新
2. 数据源更新了,但是指向了新的引用
3. adapter没有收到消息通知

我出现的问题在于原因2,接下来讲讲原因2的解决方法。

解决方法

数据获取代码

从上图可以看到我将获取到的数据传入一个列表对象,然后直接以引用的方式将列表对象传给数据源,这时候数据源指向了新的内存空间,而adapter依然从原来的内存空间挖数据,所以导致不论刷新多少次数据,界面总是实现不了更新的效果。

不以引用的方式传递数据

我们的解决方法就是,不以引用的方式传递数据。既然我们用的是List,那么我们就可以调用List的clear()和addAll()方法,如此便可以解决我们遇到的问题。

——End——

相关文章

  • 听说你们家的NotifyDataSetChanged不起作用了

    背景叨叨叨 前几天,公司项目准备上线,就在前一晚,出现了一个BUG:主页界面刷新无效。千钧一发之际,用了一个笨方法...

  • 记一次RecyclerView卡顿分析

    notifyDataSetChanged notifyDataSetChanged和notifyItemChang...

  • 听说你们结婚了

    年轻时,我们相爱,却浑然不知。——叶芝 1之子于归·宜其室家 修复了半天了的文档,依旧残破不堪,就像崖壁上留存千年...

  • 听说你们结婚了

    一看这样的名字,你可能想是不是我的前任结婚了,我在这酸不拉唧的感叹。其实是我的好同学、好闺蜜和她的前任结婚了,在他...

  • 听说你们结婚了……

    听说你们结婚了…… 真为你们高兴! 我们是90后的孩子。他们说,真心看不懂90后的爱情,除了矫情哪有真爱啊! 我们...

  • adapter notifydatasetchanged 了,但

    问题描述:数据变更了,adapter也notify了,但是对应的屏幕界面UI没有更新。问题解决:打印adapter...

  • Recyclerview.Adapter notifyData

    我先问一句 你们使用这个notifyDataSetChanged 的时候数据是怎么传递的 是像我这样“=” 呢?如...

  • 听说,你们家是孩子做主?

    【1】 周末,一家人开开心心地出去吃饭,找了个土菜馆,大家都想尝一尝家常土菜的滋味。可是5岁的轩轩就是站在门口不进...

  • 关于你 关于听说

    听说你回老家了 带着另一半一起 听说你们家新建了楼房 搬过去了 听说你升职了 前途一片光明 所有的听说 ...

  • 听说你们又要过节了

    像我这种只过清明节的人,都不知道过七夕是啥感觉。老实说,我没有羡慕,没有嫉妒,只有恨多多,悲催的是不知道恨谁呢。 ...

网友评论

    本文标题:听说你们家的NotifyDataSetChanged不起作用了

    本文链接:https://www.haomeiwen.com/subject/ibbfyttx.html