RecycleView的notifyItemRemoved使用注意
程序员文章站
2023-03-31 16:16:34
转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10116095.html 我们为了移除RecycleView的某一项,会用RecycleView的notifyItemRemoved(int position)方法,但是需要注意的是:1、用该方法之后并不会 ......
转载请标明出处,维权必究: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);
上一篇: 学习 Qt 编程的好书精品推荐!
推荐阅读
-
JavaEE基础day02 1.定义Java中的变量 四类八种 2.变量定义和使用的注意事项 3.数据类型的转换、强制数据类型转换4.算数运算符、比较运算符、逻辑运算符、赋值运算符、三元运算符
-
Go语言中切片使用的注意事项小结
-
PDO防注入原理分析以及使用PDO的注意事项
-
struts2中通配符的使用及注意问题
-
PHP常量使用的几个需要注意的地方
-
php使用Smarty的相关注意事项及访问变量的几种方式_php模板
-
PHP 中$_FILES的使用及注意事项_PHP教程
-
php foreach 使用&(与运算符)引用赋值要注意的问题_php技巧
-
使用startsWith与endsWith需注意的点
-
JAVA多线程的使用场景与注意事项总结