Android 解决RecyclerView删除Item导致位置错乱的问题
Posted 星辰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 解决RecyclerView删除Item导致位置错乱的问题相关的知识,希望对你有一定的参考价值。
RecyclerView的刷新分为内容变化和结构变化,结构变化比如remove和insert等并不会导致viewholder的更新,所以有时候我们使用
notifyItemRemoved(position);
或者使用
notifyItemInserted(position);
item的位置并没有发生改变,或者位置发生错乱,很是奇怪诡异,需要重新调用
notifyDataSetChanged();
才能刷新整个List每个Item的位置,但这样做会使得RecyclerView增加和删除的动画效果没有了。那么要既想没有Bug的插入删除,又想有动画怎么搞呢,只需要刷新删除位置以下的List的Item位置即可,那么幸亏RecyclerView有一个局部刷新的方法:
notifyItemRangeChanged(int positionStart, int itemCount)
怎么使用呢?
我们只需要在删除或插入时同时,刷新改变位置item下方的所有Item的位置:
插入动作:
notifyItemInserted(position); if (position != mData.size()) { otifyItemRangeChanged(position, mData.size() - position); }
删除动作:
notifyItemRemoved(position); if (position != mData.size()) { otifyItemRangeChanged(position, mData.size() - position); }
以上是关于Android 解决RecyclerView删除Item导致位置错乱的问题的主要内容,如果未能解决你的问题,请参考以下文章
删除 RecyclerView android中项目之间的间距
Android——实现RecyclerView左侧滑删除与右侧滑选择
如何在 Android Studio 中同时从 recyclerview 和数据库中删除数据? [关闭]
Android基础控件——RecyclerView实现拖拽排序侧滑删除效果
Android Kotlin:如何从 recyclerview 中成功删除项目、调用 notifyItemRangeChanged() 和动画