当前位置: 移动技术网 > IT编程>移动开发>Android > RecycleView的notifyItemRemoved使用注意

RecycleView的notifyItemRemoved使用注意

2018年12月14日  | 移动技术网IT编程  | 我要评论

创意格子铺,上海外来从业人员综合保险卡查询,北宋士大夫的非人生活 笔趣阁

转载请标明出处,维权必究:https://www.cnblogs.com/tangzh/p/10116095.html

我们为了移除recycleview的某一项,会用recycleview的notifyitemremoved(int position)方法,但是需要注意的是:
1、用该方法之后并不会刷新item,也就是说不会重新bind数据,那么position也就没有刷新,每个item对应的position还是原来的那个,那就会有问题,比如现在只剩下3个item,而我们点击删除最后一个item的时候,它的position是原来的position4,那么实际上就是调用recycleview的notifyitemremoved(4),就会出现越界。

 

那我们该怎么做呢?
1、删除之后重新:notifydatasetchanged();,但是这样就没有删除动画。

 

2、使用notifyitemrangechanged(int positionstart, int itemcount)

这个方法,是通知所有观察者: 从positinstart开始的itemcount这些个item已经改变了,与notifyitemrangechanged(position, itemcount, null)等价

positionstart : 是从界面哪个位置的item开始变化,比如你点击界面上的第二个itemview positionstart是1
itemcount : 是已经发生变化的item的个数(包括自己,即正在点击这个),比如,你点击界面上的第二个itemview,position [1,9] 发生变化,共计9个,因此我们计算是list.size() - position 
此时使用:
notifyitemremoved(position);
notifyitemrangechanged(position, mlist.size() - position);
 
注意如果有headview的话还需要将position加上对应的headview数目,比如有一个headview,那么就需要:
notifyitemremoved(position + 1);
notifyitemrangechanged(position + 1, mlist.size() - position);
 

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网