关于Recyclerview删除item后的数据乱跳问题

recyclerview的使用就不多说了简单使用自己看吧,很easy

使用recyclerview,有很多炫酷的效果,比如item的插入,item的删除,item每个条目的加载动画,都可以自己去设置,当然也有默认的动画。

需求逻辑:
recyclerview列表里面有1 , 2,3,4四个item。现在通过点击item3position =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);
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安静的码字猴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值