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:把数据从list中remove掉,
notifyItemRemoved:显示动画效果
notifyItemRangeChanged:对于被删掉的位置及其后range大小范围内的view进行重新onBindViewHolder
代码应该这样写
imageList.remove(pos);
notifyItemRemoved(pos);
notifyItemRangeChanged(pos,imageList.size());
以上是关于RecyclerView notifyItemRemoved 的坑的主要内容,如果未能解决你的问题,请参考以下文章
RecyclerView系列:RecyclerView嵌套RecyclerView(BaseRecyclerViewAdapterHelper实现)