码迷,mamicode.com
首页 > 移动开发 > 详细

Android 解决RecyclerView删除Item导致位置错乱的问题

时间:2017-04-20 10:02:24      阅读:542      评论:0      收藏:0      [点我收藏+]

标签:etc   count   bsp   div   mda   调用   删除   刷新   方法   

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导致位置错乱的问题

标签:etc   count   bsp   div   mda   调用   删除   刷新   方法   

原文地址:http://www.cnblogs.com/zhujiabin/p/6737117.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!