没错 就是购物车
放图镇楼

大体效果应该就是这样
购物车涉及到的功能
全选 ,反选,总金额,数量加减,结算金额等 差不多了
实现方式
RecyclerView嵌套RecyclerView
ExpandableListView 可折叠列表
使用ExpandableListView实现购物车
无需依赖 原生控件
ExpandableListView 简介
是一种用于垂直滚动展示两级列表的视图,组可以单独展开
布局代码

初始化控件

请求数据
Retrofit+OkHttp+RxJava 请求
MVP回调 省略…………
成功拿到数据后 创建ExpandableListView 的适配器

适配器中方法介绍
需重写10个抽象方法 不要怕都很简单



获取外/内层视图 需优化
使用ViewHolder 减少findViewById次数
复用 convertView 减少视图创建

内层也一样

展示数据
设置好适配器 数据就可以展示了

放张当前效果图

下面开始实现功能全选
逻辑是这样 通过适配器传递的List集合 来设置外层和内层的CheckBox状态
需要在外/内层列表的集合添加 isChecked 布尔值属性 添加get set方法 方便调用
明白上边这些白话后 代码来了
先给外/内层 CheckBox设置上默认状态

全选/反选

组选

计算总金额及个数

在全选按钮监听中 调用该方法 传递相应集合

当前效果图

组选 计算金额
使用到了EventBus


单选

当前效果图

暂时就到这了 明天抽时间写下加减器的逻辑
晚安。
-----听君一席话,白读两年书
-----2020-0309-22:47 我爱生活 生活爱我 阿门。
加减器
首先自定义View (组合式View)
需要接口回调 数量


当前效果图

实时计算金额展示
当数量改变 及时计算金额 并展示
自定义View 实例化后 通过viewHolder调用接口 回调传递的数据

这就可以了
再放效果图

到这 一个简陋的购物车就实现了
当用户点击去付款后 就会带着当前选中的数据 去支付
-----完
2020-03-10-22:12
网友评论