关于Recyclerview删除item后的数据乱跳问题
2017-05-19 18:36
2556 查看
recyclerview的使用就不多说了简单使用自己看吧,很easy
使用recyclerview,有很多炫酷的效果,比如item的插入,item的删除,item每个条目的加载动画,都可以自己去设置,当然也有默认的动画。
需求逻辑:
recyclerview列表里面有1 , 2,3,4四个item。现在通过点击item3(
我比较笨,没有用eventbus这种订阅事件,而是通过:
点击item时候 startactivityForResult同时将点击的item的position也一同传到了详情界面,在详情界面中删除item成功后,先setResult(再次把position返回给recyclerview所在页面),然后再finish详情页。
上面的都不是重点,重点是 如何在onActivityResult方法中刷新Recyclerview的条目,虽然Recyclerview用的也听熟练的,但是,说实话,由于太暴躁,并没有深入了解太多。
今天遇到了这个问题,就是对Recyclerview了解不足所引起的。
言归正传,Recyclerview中也有类似Listview的notifyDataSetChanged方法,但,还增加了很多扩展:
暴躁如我,既然是删除item,肯定就是调用notifyItemRemoved了。
两行代码改变了世界,机智如你,这种需求简简单单轻轻松松解决了。乍看一下,没有什么问题,就给交工了。结果测试一测,出现了难以解释的问题:
正如上图所示,删除之后的列表显示木有任何的anything问题,But,在点击进入详情的时候,出现了 牛头对马嘴的蒙逼bug,简直是日了哈士奇了。
最后,暴躁的我使用了debug,发现,这个时候,我点击item2,传到详情的position,竟然是2~!!!
然后,我仔细想了想,notifyItemRemoved方法,应该是只是局部ui的刷新,被删除掉的item之后的数据都没有变化,position还是原来的position(即share3的postion还是2),但是通过list.get(2)得到的确是share2.!!
然后,百度之后,果然,需要在此调用一下
使用recyclerview,有很多炫酷的效果,比如item的插入,item的删除,item每个条目的加载动画,都可以自己去设置,当然也有默认的动画。
需求逻辑:
recyclerview列表里面有1 , 2,3,4四个item。现在通过点击item3(
position =1)进入详情,在详情里面删除此条目,在返回到recyclerview页面时候,刷新列表(不允许再联网请求数据)。
我比较笨,没有用eventbus这种订阅事件,而是通过:
点击item时候 startactivityForResult同时将点击的item的position也一同传到了详情界面,在详情界面中删除item成功后,先setResult(再次把position返回给recyclerview所在页面),然后再finish详情页。
上面的都不是重点,重点是 如何在onActivityResult方法中刷新Recyclerview的条目,虽然Recyclerview用的也听熟练的,但是,说实话,由于太暴躁,并没有深入了解太多。
今天遇到了这个问题,就是对Recyclerview了解不足所引起的。
言归正传,Recyclerview中也有类似Listview的notifyDataSetChanged方法,但,还增加了很多扩展:
暴躁如我,既然是删除item,肯定就是调用notifyItemRemoved了。
shareListCodeList.remove(position_change); oa_shareadapter.notifyItemRemoved(position_change);
两行代码改变了世界,机智如你,这种需求简简单单轻轻松松解决了。乍看一下,没有什么问题,就给交工了。结果测试一测,出现了难以解释的问题:
正如上图所示,删除之后的列表显示木有任何的anything问题,But,在点击进入详情的时候,出现了 牛头对马嘴的蒙逼bug,简直是日了哈士奇了。
最后,暴躁的我使用了debug,发现,这个时候,我点击item2,传到详情的position,竟然是2~!!!
然后,我仔细想了想,notifyItemRemoved方法,应该是只是局部ui的刷新,被删除掉的item之后的数据都没有变化,position还是原来的position(即share3的postion还是2),但是通过list.get(2)得到的确是share2.!!
然后,百度之后,果然,需要在此调用一下
int position_delete = data.getIntExtra("position", -1); OA_JournalList.remove(position_delete); if(position_change != shareListCodeList.size()){ oa_shareadapter.notifyItemRangeChanged(position_change, shareListCodeList.size() - position_change); }
相关文章推荐
- RecyclerView.Adapter关于notifyItemInserted等数据错位问题
- 解决RecyclerView删除Item导致位置错乱的问题
- 关于RecyclerView实现瀑布流,上下滑动时item之间互换位置的问题
- Android RecyclerView关于item无法充满屏幕的问题
- 关于listview或者recyclerview里面的edittext数据保存问题
- 关于RecyclerView notifyItemChanged() 刷新下标错误问题
- 关于在RecyclerView中使用UniversalImageLoader加载图片刷新数据时引起的闪烁问题
- Android RecyclerView单点、批量数据元素项目item的增加、删除和移动
- 关于Recyclerview的item指定高度却不对的问题
- 关于Android Recyclerview隐藏item的所在区域显示大空白问题的解决方案
- RecyclerView关于添加/删除Item的那些坑~~~
- RecyclerView的notifyItemRemoved()方法删除条目问题
- Android 解决RecyclerView删除Item导致位置错乱的问题
- Recyclerview列表,item嵌套横向Gridview 解决滑动冲突,数据加载问题
- 解决RecyclerView删除Item导致位置错乱的问题 以及删除最后一个出错的问题
- Android RecyclerView单点、批量数据元素项目item的增加、删除和移动
- RecyclerView使用,RecyclerView使用,增加一个item,删除一个item,更新数据,item点击事件
- Recyclerview 删除/插入item时,导致position错乱问题
- Android RecyclerView中item焦点乱跳问题(适用于PDA以及TV等带方向键的安卓设备)
- Android 关于RecyclerView瀑布流显示图片时Item切换、闪烁等问题优化