沒錯(cuò)?就是購(gòu)物車
放圖鎮(zhèn)樓

大體效果應(yīng)該就是這樣
購(gòu)物車涉及到的功能
全選 ,反選,總金額,數(shù)量加減,結(jié)算金額等 差不多了
實(shí)現(xiàn)方式?
RecyclerView嵌套R(shí)ecyclerView
ExpandableListView? ?可折疊列表
使用ExpandableListView實(shí)現(xiàn)購(gòu)物車
無需依賴? ?原生控件
ExpandableListView?簡(jiǎn)介
是一種用于垂直滾動(dòng)展示兩級(jí)列表的視圖,組可以單獨(dú)展開
布局代碼

初始化控件

請(qǐng)求數(shù)據(jù)
Retrofit+OkHttp+RxJava? 請(qǐng)求
MVP回調(diào)? ? ? ?省略…………
成功拿到數(shù)據(jù)后?創(chuàng)建ExpandableListView?的適配器

適配器中方法介紹
需重寫10個(gè)抽象方法? ? 不要怕都很簡(jiǎn)單



獲取外/內(nèi)層視圖?需優(yōu)化
使用ViewHolder?減少findViewById次數(shù)
復(fù)用 convertView?減少視圖創(chuàng)建

內(nèi)層也一樣

展示數(shù)據(jù)
設(shè)置好適配器? 數(shù)據(jù)就可以展示了

放張當(dāng)前效果圖

下面開始實(shí)現(xiàn)功能全選
邏輯是這樣?通過適配器傳遞的List集合? ?來設(shè)置外層和內(nèi)層的CheckBox狀態(tài)
需要在外/內(nèi)層列表的集合添加 isChecked?布爾值屬性?添加get set方法?方便調(diào)用
明白上邊這些白話后? 代碼來了
先給外/內(nèi)層 CheckBox設(shè)置上默認(rèn)狀態(tài)?

全選/反選

組選

計(jì)算總金額及個(gè)數(shù)

在全選按鈕監(jiān)聽中?調(diào)用該方法?傳遞相應(yīng)集合

當(dāng)前效果圖

組選?計(jì)算金額
使用到了EventBus


單選

當(dāng)前效果圖

暫時(shí)就到這了? 明天抽時(shí)間寫下加減器的邏輯??
晚安。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -----聽君一席話,白讀兩年書
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????? -----2020-0309-22:47? ?我愛生活?生活愛我? ?阿門。
加減器
首先自定義View? ?(組合式View)??
需要接口回調(diào)?數(shù)量


當(dāng)前效果圖

實(shí)時(shí)計(jì)算金額展示
當(dāng)數(shù)量改變? 及時(shí)計(jì)算金額?并展示
自定義View? ?實(shí)例化后?通過viewHolder調(diào)用接口?回調(diào)傳遞的數(shù)據(jù)

這就可以了
再放效果圖

到這? 一個(gè)簡(jiǎn)陋的購(gòu)物車就實(shí)現(xiàn)了
當(dāng)用戶點(diǎn)擊去付款后? 就會(huì)帶著當(dāng)前選中的數(shù)據(jù)? 去支付
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -----完
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2020-03-10-22:12