ListView中notifyDataSetChanged()刷新数据不更新原因分析

情景分析:

在开发过程中,我们经常会使用notifyDataSetChanged()实时的让ListView进行刷新操作,但是有的时候却会发现ListView不再刷新了,有的时候却又可以自动刷新。

原因分析:

ListView中notifyDataSetChanged()刷新数据不更新原因分析_第1张图片
如上图所示,传递给Adapter的List引用一开始为引用a,但是,当我们在程序中执行刷新更换数据的时候,如果一不小心将List的引用换成了引用b的话,就会导致上述情景的发生。那是因为Adapter刷新的时候,还是用得引用a的数据,而不是引用b;

解决思路:

思路1:

在Adapter中为其List动态的设置一个set方法,这样当List的引用改变时,实时的调用set方法也让Adapter中的List对应的将引用同步更改掉,这样就可以实现调用notifyDataSetChanged()刷新效果了;

思路2:

从源头做起,避免改变List的引用,将新生成的引用b的数据,调用List的addAll(…)方法,全部更新到引用a里面,这样子就可以让引用a的数据实时刷新,之后再调用notifyDataSetChanged(),也就可以实现我们的刷新效果了。

你可能感兴趣的:(Android)