RecyclerView notifyItemRemoved 的坑

Posted 潇潇微雨up

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RecyclerView notifyItemRemoved 的坑相关的知识,希望对你有一定的参考价值。

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());


以上是关于RecyclerView notifyItemRemoved 的坑的主要内容,如果未能解决你的问题,请参考以下文章

RecyclerView详解

RecyclerView

RecyclerView嵌套RecyclerView问题

RecyclerView小结

RecyclerView系列:RecyclerView嵌套RecyclerView(BaseRecyclerViewAdapterHelper实现)

recyclerview怎么监听滑动事件