美文网首页@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不起作用了

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