RecyclerView中 多行使用notifyItemRemoved()引发的闪退问题

首先RecyclerView.Adapter中的notifyItemRemoved()方法需要传入的参数是 item的下标

0、1、2、3这样的

一个一个item的删除是没有问题的

但是在多行删除中会出现position混乱甚至是崩溃:

因为notifyItemRemoved()这个方法执行时是去 遍历Adapter中的tiem,第二次执行这个方法时的下标与我们想要的下标不一致,会偏移

比如说:我想要删除下标为0和2的item

在真正执行时,删除的却是0和3的item(第一次未结束时马上执行第二次就会出现下标偏移)

那在多次执行notifyItemRemoved()的时候减去偏移量就好了:

    //listInt是下标集合

    int count = 0;
    for (Integer integer : listInt) { 
        dataAdapter.notifyItemRemoved(integer - count);
        count++;
    }

这样就不会出现position混乱和崩溃问题了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RecyclerView是一个强大的Android视图容器,可以在横排多行布局显示长短不一的数据列表。使用RecyclerView,我们可以方便地创建一个可滚动的视图列表,并对每个列表项进行高度自定义。 要实现横排多行布局,我们需要使用RecyclerView的LayoutManager。其,GridLayoutManager是一个可以将项目在网格显示的LayoutManager。我们可以通过设置GridLayoutManager的spanCount属性来指定每行显示的列数。 对于长短不一的数据列表,我们可以使用RecyclerView的Adapter来将每个数据项绑定到相应的视图项上。在Adapter的getItemCount()方法,我们可以返回数据列表的长度。 在Adapter,我们需要重写onCreateViewHolder()方法来创建视图项的布局。我们可以根据需要选择不同的布局文件,并通过LayoutInflater来生成视图项的View实例。 在Adapter的onBindViewHolder()方法,我们可以为每个视图项设置数据。根据数据的长度和内容,我们可以根据需要调整每个视图项的布局。 最后,我们需要将LayoutManager和Adapter与RecyclerView进行关联,并将RecyclerView添加到相应的父容器。通过调用RecyclerView的setLayoutManager()和setAdapter()方法,我们可以让RecyclerView显示出横排多行布局,并展示出长短不一的数据列表。 综上所述,通过RecyclerView的LayoutManager和Adapter,我们可以轻松实现横排多行布局并展示长短不一的数据列表。这为我们创建灵活且自定义的视图列表提供了强大的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值