项目BUG日志-Recyclerview篇
程序员文章站
2022-05-14 21:18:16
...
时间:2018年2月4日
bug描述 : 因项目需要,需要做一个带有头的列表视图,我采用的recycleview,将第一个条目当头,然后获取列表数据,将数据装入集合后,调用了
notifyItemRangeInserted(position, collection.size());
当列表没有数据,只显示头的时候,这个时候是没有bug的,当列表有数据程序就崩溃了,并报了错:
于是我查看了这个方法的源码:
意思是 我传的这个 child view 是一个还没有解除绑定的view , 我通过日志发现这个viewholder 就是recyclerview 的头,
通过分析我猜测应该是 加入数据,刷新那句代码出了问题,
notifyItemRangeInserted(position, collection.size());这句代码只会刷新我给定的范围,那么就会将头排除在外,这样在adpter和viewholder 显示的时候,就会显示这个view仍然保留着以前的状态,就是这个flag 仍然是绑定状态;
解决的方案也很简单,把范围刷新 换成
adapter.notifyDataSetChanged();
再次运行,问题得到解决.