情景分析:
在开发过程中,我们经常会使用notifyDataSetChanged()实时的让ListView进行刷新操作,但是有的时候却会发现ListView不再刷新了,有的时候却又可以自动刷新。
原因分析:
如上图所示,传递给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(),也就可以实现我们的刷新效果了。
时间: 2024-11-06 18:26:23