有关notifyItemRemoved(position)方法导致界面position错乱的解决办法
来源:互联网 发布:淘宝幸运抽奖 编辑:程序博客网 时间:2024/06/05 01:17
最近在项目中做侧滑删除的时候总是出现点击删除这个删除的却是那个,经过研究发现问题如下
拿recylerview来说吧,以下是错误代码
@Override public void onBindViewHolder(MyAdapter.MyHolder holder, final int position) { holder.text.setText(list.get(position)); holder.delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.onItemClick(v, position); } }); }
我们在bind方法设置点击事件的监听器的时候,由于在匿名内部类中,所以position要变final,但是这样就会出问题,position随着bind方法在不停的绑定而改变,所以它不可以变final,其实studio是有提示的,它建议用holder.getAdapterPosition()方法,这就引入了第二种错误代码
@Override public void onBindViewHolder(MyAdapter.MyHolder holder,int position) { final int position1 = holder.getAdapterPosition(); holder.text.setText(list.get(position)); holder.delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.onItemClick(v, position1); } }); }
虽然上面用了holder.getAdapterPosition()方法,但是将得到的position又变final了,还是会使界面在删除的时候错乱,所以正确的代码如下
@Override public void onBindViewHolder(final MyAdapter.MyHolder holder, int position) { holder.text.setText(list.get(position)); holder.delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.onItemClick(v, holder.getAdapterPosition()); } }); }
将holder变final,在需要用position的地方用holder.getAdapterPosition()获取
好了,一点小经验与大家分享,希望每个人都能把自己踩过的坑写出来,让大家不必再踩同样的坑了
阅读全文
0 0
- 有关notifyItemRemoved(position)方法导致界面position错乱的解决办法
- XRecyclerView的notifyItemRemoved 删除item时position的问题
- 解决RecycleView Adapter使用notifyItemRemoved造成Position混乱的问题。
- ListView的Intent跳转详情页, 滑动与点击Position错乱导致数据混乱问题解决
- 如何解决在 getView()使用ViewHolder导致position错乱
- Recyclerview 删除/插入item时,导致position错乱问题
- position:fixed的解决办法!
- 解决ListView的getView()方法中View设置监听position错乱的问题
- jQuery的position()方法
- recyclerview 的item被remove后position的错乱问题
- 有关div布局的position:absolute属性
- Position:absolute居中的方法
- position
- position
- position
- position
- position
- position
- 图片懒加载处理
- 使用maven管理jar包
- flask+bootstrap实现dashboard中的统计图表
- 【UVa1617】Laptop 笔记本(贪心)
- BigDecimal解决商业运算中丢失精度的问题
- 有关notifyItemRemoved(position)方法导致界面position错乱的解决办法
- 学习教程
- OS模块
- COCO Loss
- pandas/sklearn入门指南
- 考试易错点&&注意事项
- 严蔚敏数据结构——算法2.7改进
- Java数组越界错误:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 15
- 面试经验