Android RecyclerView删除多个选中的item 及 局部刷新

本文主要介绍如何在Android中优化购物车功能,包括删除多个选中item及实现局部刷新。通过使用BaseRecyclerViewAdapterHelper,修复了删除商品后总价不更新的问题,并提供了正确的删除操作步骤,同时对比了不同局部刷新方法的效果。
摘要由CSDN通过智能技术生成

Android RecyclerView删除多个选中的item 及 局部刷新

最近看了一个慕课网上的实战课, Android通用框架设计与完整电商APP开发 ,这个课也是2/3年之前的视频了,所以购物车功能的有些地方不太对了,我就优化了一下,主要是两个方面:

  1. 删除多个选中的item
  2. 局部刷新

关于所有item的选中状态为选中时,recyclerview外部的全选按钮状态的更新,加一个回调就可以实现,具体源码可以去我的 码云 参考,主要是ShopCartAdapterShopCartDelegate 两个类,都在com.wll.ec.fast.main.cart 包下。

这里的使用了BaseRecyclerViewAdapterHelper,不太了解的同学可以先去github 上 了解一下。

删除多个选中的item

首先是删除多个选中的商品后数据显示错误问题,而且总价是显示所有未选中和选中商品的总价,删除商品后总价并没有改变,我对此处进行了优化,总价是随着商品选中状态的改变而改变的,且若删除选中的商品总价也会改变,效果图对比如下:
在这里插入图片描述
可以看到最后两个怎么点击也删除不了。而且,总价变化也不对。
来看一下改进之后的效果,如下:
在这里插入图片描述
在这里插入图片描述
删除选中item的思路如下:首先要记录是哪些位置的item被选中了,将选中的对应位置数据从adapter的数据中删除,并调用

notifyItemRemoved(int position)
notifyItemRangeRemoved(int positionStart, int itemCount)

注意,如果不调用上面两个方法,而是只删除数据并更新数据,最后再notifyItemRangeRemoved的话会导致数据错乱,下面附效果图:
在这里插入图片描述
最后我们要把数据中position位置后面的数据中记录该条数据位置信息的数据更新。如果不这么做的话,会导致后续删除position 位置的数据时,删除的是其他位置的数据,如下图:
在这里插入图片描述
所以一定要记得更新数据。

相关代码如下:

	@OnClick(R2.id.tv_top_shop_cart_remove_selected)
    void onClickRemoveSelectedItem() {
   
        double subPrice = 0;
        final List
  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值