今天写一个列表的时候遇到一个问题,就是明明调用了notifyDataSetChanged,但是列表却没有刷新,开始以为是list数据的问题,结果排查了很久发现,list中的数据也是对的,notifyDataSetChanged方法也确实调用了,但是就是没有更新。最后万般无奈之下,突然意识到自己犯了一个大错,就是原来我想实现的功能是,更新数据之前,把list中的数据清空,但是我用的是直接把list=null,然后又重新new了一个list出来,我以为一句代码很方便,但是忽略了一点,list=null;以后,再重新new出来的对象就和原来的不一样了,不再是原来的那个数据块的地址了,而notifyDataSetChanged方法是通过反射查看view中使用的数据是否发生了改变,它所查看的正是那个数据块。
然而那个数据块已经不存在了,新new出来的数据块又不是它所检测的,所以自然不会更新列表了,这里解决的办法也很简单,就是在做这块的时候一定要保证自己在整个过程中的list没有发生变化就可以了。