RecyclerView里notifyItemRemoved的坑
来源:互联网 发布:oracle数据库备份方法 编辑:程序博客网 时间:2024/06/01 08:05
RecyclerView很多时候是展示静态的数据,并不会有删除的操作,讲到RecyclerView时,会提到它提供了一个很好的展现删除操作动画的函数,代码片段一般是这样的
@Override public void onBindViewHolder(final CommonViewHolder holder, final int position) { holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { contentList.remove(position); notifyItemRemoved(position); } }); }
这样写的话,很快会产生数据删除错乱和超出索引异常导致崩溃。
原因是函数里面的传入的参数position,它是在进行onBind操作时确定的,在删除单项后,已经出现在画面里的项不会再有调用onBind机会,这样它保留的position一直是未进行删除操作前的postion值。
对于尚未进入画面的单项来说,它会使用新的position值,这个值是正确的,如果在单项里加上下面的代码
holder.textView.setText(contentList.get(position) + "#" + String.valueOf(position));
在删除第一屏的一项后,向上滚动,会发现新滚上来的一行和它上面的一行的textview显示是一样的。
解决办法也很简单
//或者使用getLayoutPosition contentList.remove(holder.getAdapterPosition()); notifyItemRemoved(holder.getAdapterPosition());
PS:推荐评论里提供的方法,谢谢
dodouaj
2016-03-30 16:59发表 [回复]
更好的解决办法是。
先remove,再notifyItemRemoved, 最后再notifyItemRangeChanged
remove:把数据从list中remove掉,
notifyItemRemoved:显示动画效果
notifyItemRangeChanged:对于被删掉的位置及其后range大小范围内的view进行重新onBindViewHolder
阅读全文
0 0
- RecyclerView里notifyItemRemoved的坑
- RecyclerView里notifyItemRemoved的坑
- RecyclerView里notifyItemRemoved的坑
- RecyclerView里notifyItemRemoved的坑
- RecyclerView notifyItemRemoved 的坑
- RecyclerView的notifyItemRemoved()方法删除条目问题
- RecyclerView.Adapter notifyItemRemoved postion错位的问题
- RecyclerView关于notifyItemRemoved的那点小事
- RecyclerView关于notifyItemRemoved的那点小事!
- RecyclerView关于notifyItemRemoved的那点小事
- recyclerview notifyItemRemoved报错
- RecyclerView使用notifyItemRemoved错乱
- RecyclerView如何使用正确notifyItemRemoved
- recyclerView.notifyItemRemoved数据索引混乱
- 使用recyclerView的notifyItemRemoved()和remove数据的时候出现的
- Android RecyclerView使用notifyItemRemoved()移除数据时数据错乱
- 安卓开发 RecycleView 中notifyItemRemoved遇到的那些坑, IndexOutOfIndexException、删除错乱,数组越界等终极解决方案,多人亲测可行
- XRecyclerView的notifyItemRemoved 删除item时position的问题
- C++ dll 类型与 C#类型对应关系
- Qmake
- Java 反射有效的修改 final 属性值
- C语言中的printf用%d输出float类型数据出现或以%f输出int型数据的结果为什么是0
- RPM软件包的安装及卸载
- RecyclerView里notifyItemRemoved的坑
- 从Java角度分析Python的入门介绍
- 快速入门shell脚本编写(四)
- 推荐6个微信小程序天气接口Api
- Session 的创建和销毁
- MFC模仿vc6.0梯形标签控件
- java读取excel实现 poi
- FFmpeg学习问题集合记录
- 推荐使用maven shade进行打包,assembly打包会出现若干问题