RecyclerView notifyItemRemoved 的坑

来源:互联网 发布:软件空下载 编辑:程序博客网 时间:2024/06/05 12:13

RecyclerView 的 notifyItemRemoved  方法  可以 实现 带动画的 删除 

先设置 

recyclerView.setItemAnimator(new DefaultItemAnimator());   这样可以带有 添加和删除的动画  

然后  更新的时候 不要使用  notifyDataSetChanged 方法   使用  notifyItemRemoved(pos)方法  

可以实现动画添加删除   其中动画的可以使用很多  

高兴的是,github上已经有很多类似的项目了,这里我们直接引用下:动画,大家自己下载查看。 
提供了SlideInOutLeftItemAnimator,SlideInOutRightItemAnimator, 
SlideInOutTopItemAnimator,SlideInOutBottomItemAnimator等动画效果。  


但是 有一个问题  如果 单纯只是这样   删除的时候会 崩溃  数组越界  是因为 这个方法 没有更新 adapter的数据集  只是更新了界面

调用一下notifyItemRangeChanged方法  绑定一下数据集就可以了


先remove,再notifyItemRemoved, 最后再notifyItemRangeChanged
remove:把数据从list中remove掉,
notifyItemRemoved:显示动画效果

notifyItemRangeChanged:对于被删掉的位置及其后range大小范围内的view进行重新onBindViewHolder


代码应该这样写

imageList.remove(pos);                        notifyItemRemoved(pos);                        notifyItemRangeChanged(pos,imageList.size());


0 0
原创粉丝点击