依赖:
implementation 'com.squareup.okhttp3:okhttp:3.9.1'
implementation 'com.google.code.gson:gson:2.8.+'
compile 'com.github.bumptech.glide:glide:3.6.1'
布局:
layout_title
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/holo_red_light"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回"
android:textSize="25sp"
android:padding="10dp"
android:textColor="@android:color/white"
android:id="@+id/btnBack"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"
android:padding="10dp"
android:textColor="@android:color/white"
android:layout_weight="1"
android:gravity="center"
android:text="购物车"/>
<TextView
android:id="@+id/btnEditor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="编辑"
android:textColor="@android:color/white"
android:textSize="25sp"
android:padding="10dp"/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.bwie.shoppcardemo.view.activity.MainActivity">
<include layout="@layout/layout_title" />
<ExpandableListView
android:id="@+id/expandList"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="2dp"
android:background="#000000"/>
<include layout="@layout/layout_bottom" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全选"
android:textSize="25sp"
android:padding="10dp"
android:id="@+id/btnCheckAll"/>
<TextView
android:id="@+id/tvTotalPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:padding="10dp"
android:textColor="@android:color/black"
android:layout_weight="1"
android:gravity="center"
android:text="合计:¥0.00"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="结算(0)"
android:textColor="@android:color/white"
android:textSize="25sp"
android:padding="10dp"
android:background="@android:color/holo_red_light"
android:id="@+id/btnAmount"/>
</LinearLayout>
layout_child_item
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:id="@+id/ck_child_choose"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:scaleX="0.6"
android:scaleY="0.6" />
<ImageView
android:id="@+id/iv_show_pic"
android:layout_width="70dp"
android:layout_height="80dp"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:src="@mipmap/ic_launcher"
android:layout_toRightOf="@id/ck_child_choose" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="15dp"
android:layout_toRightOf="@id/iv_show_pic"
android:orientation="vertical">
<TextView
android:id="@+id/tv_commodity_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="酒红色纯红色纯羊毛西服套装"
android:textColor="@android:color/black"
android:textSize="12sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_commodity_attr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:text="属性:粉蓝色"
android:textSize="12sp"
android:textColor="@color/colorPrimary" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_commodity_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="¥390"
android:textColor="@android:color/holo_red_dark"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_commodity_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:text="x1"
android:textColor="@android:color/darker_gray" />
<LinearLayout
android:id="@+id/rl_edit"
android:layout_width="120dp"
android:background="@android:color/holo_orange_light"
android:layout_height="30dp"
android:layout_marginLeft="20dp"
>
<TextView
android:id="@+id/iv_sub"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center"
android:textColor="@android:color/black"
android:background="@android:color/white"
android:layout_margin="1dp"
android:layout_height="match_parent"
android:text=" - " />
android:id="@+id/tv_commodity_show_num"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center"
android:background="@android:color/white"
android:layout_margin="1dp"
android:layout_height="match_parent"
android:text="1"
/>
android:id="@+id/iv_add"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center"
android:layout_margin="1dp"
android:background="@android:color/white"
android:layout_height="match_parent"
android:text=" + " />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<Button
android:id="@+id/btn_commodity_delete"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:gravity="center"
android:text="x"
android:background="@android:color/holo_blue_light"
android:textSize="20sp"
android:textColor="@android:color/holo_green_dark"
android:layout_margin="5dp"
android:visibility="gone" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
android:id="@+id/ck_group_choosed"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="商家1"
android:gravity="center_vertical"
android:textSize="25sp"
android:focusable="false"
android:padding="10dp"/>
* Created by rookie on 2018/1/8.
*/
/**
* msg : 请求成功
* code : 0
* data : [{"list":[{"bargainPrice":11800,"createtime":"2017-10-10T17:33:37","detailUrl":"https://item.m.jd.com/product/4338107.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t6700/155/2098998076/156185/6cf95035/595dd5a5Nc3a7dab5.jpg!q70.jpg","num":1,"pid":57,"price":5199,"pscid":40,"selected":0,"sellerid":1,"subhead":"【i5 MX150 2G显存】全高清窄边框 8G内存 256固态硬盘 支持指纹识别 预装WIN10系统","title":"小米(MI)Air 13.3英寸全金属轻薄笔记本(i5-7200U 8G 256G PCle SSD MX150 2G独显 FHD 指纹识别 Win10)银\r\n"},{"bargainPrice":99,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/4345173.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t6037/35/2944615848/95178/6cd6cff0/594a3a10Na4ec7f39.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6607/258/1025744923/75738/da120a2d/594a3a12Ne3e6bc56.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6370/292/1057025420/64655/f87644e3/594a3a12N5b900606.jpg!q70.jpg","num":1,"pid":45,"price":2999,"pscid":39,"selected":0,"sellerid":1,"subhead":"高清双摄,就是清晰!2000+1600万高清摄像头,6GB大内存+高通骁龙835处理器,性能怪兽!","title":"一加手机5 (A5000) 6GB+64GB 月岩灰 全网通 双卡双待 移动联通电信4G手机"}],"sellerName":"商家1","sellerid":"1"},{"list":[{"bargainPrice":11800,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/5025518.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t8830/106/1760940277/195595/5cf9412f/59bf2ef5N5ab7dc16.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5428/70/1520969931/274676/b644dd0d/591128e7Nd2f70da0.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5566/365/1519564203/36911/620c750c/591128eaN54ac3363.jpg!q70.jpg","num":1,"pid":58,"price":6399,"pscid":40,"selected":0,"sellerid":2,"subhead":"升级4G大显存!Nvme协议Pcie SSD,速度快人一步】GTX1050Ti就选拯救者!专业游戏键盘&新模具全新设计!","title":"联想(Lenovo)拯救者R720 15.6英寸游戏笔记本电脑(i5-7300HQ 8G 1T+128G SSD GTX1050Ti 4G IPS 黑)"},{"bargainPrice":6666,"createtime":"2017-10-10T16:01:31","detailUrl":"https://item.m.jd.com/product/5089273.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t8284/363/1326459580/71585/6d3e8013/59b857f2N6ca75622.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9346/182/1406837243/282106/68af5b54/59b8480aNe8af7f5c.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8434/54/1359766007/56140/579509d9/59b85801Nfea207db.jpg!q70.jpg","num":1,"pid":46,"price":234,"pscid":39,"selected":0,"sellerid":2,"subhead":"【iPhone新品上市】新一代iPhone,让智能看起来更不一样","title":"Apple iPhone 8 Plus (A1864) 64GB 金色 移动联通电信4G手机"}],"sellerName":"商家2","sellerid":"2"}]
*/
private String code;
private List<DataBean> data;
return msg;
}
this.msg = msg;
}
return code;
}
this.code = code;
}
return data;
}
this.data = data;
}
/**
* list : [{"bargainPrice":11800,"createtime":"2017-10-10T17:33:37","detailUrl":"https://item.m.jd.com/product/4338107.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t6700/155/2098998076/156185/6cf95035/595dd5a5Nc3a7dab5.jpg!q70.jpg","num":1,"pid":57,"price":5199,"pscid":40,"selected":0,"sellerid":1,"subhead":"【i5 MX150 2G显存】全高清窄边框 8G内存 256固态硬盘 支持指纹识别 预装WIN10系统","title":"小米(MI)Air 13.3英寸全金属轻薄笔记本(i5-7200U 8G 256G PCle SSD MX150 2G独显 FHD 指纹识别 Win10)银\r\n"},{"bargainPrice":99,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/4345173.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t6037/35/2944615848/95178/6cd6cff0/594a3a10Na4ec7f39.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6607/258/1025744923/75738/da120a2d/594a3a12Ne3e6bc56.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6370/292/1057025420/64655/f87644e3/594a3a12N5b900606.jpg!q70.jpg","num":1,"pid":45,"price":2999,"pscid":39,"selected":0,"sellerid":1,"subhead":"高清双摄,就是清晰!2000+1600万高清摄像头,6GB大内存+高通骁龙835处理器,性能怪兽!","title":"一加手机5 (A5000) 6GB+64GB 月岩灰 全网通 双卡双待 移动联通电信4G手机"}]
* sellerName : 商家1
* sellerid : 1
*/
private String sellerid;
private List<ListBean> list;
//商家是否被选中 组条目是否被选中
private boolean isGroupChoosed;
return isGroupChoosed;
}
isGroupChoosed = groupChoosed;
}
return sellerName;
}
this.sellerName = sellerName;
}
return sellerid;
}
this.sellerid = sellerid;
}
return list;
}
this.list = list;
}
/**
* bargainPrice : 11800
* createtime : 2017-10-10T17:33:37
* detailUrl : https://item.m.jd.com/product/4338107.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends
* images : https://m.360buyimg.com/n0/jfs/t6700/155/2098998076/156185/6cf95035/595dd5a5Nc3a7dab5.jpg!q70.jpg
* num : 1
* pid : 57
* price : 5199
* pscid : 40
* selected : 0
* sellerid : 1
* subhead : 【i5 MX150 2G显存】全高清窄边框 8G内存 256固态硬盘 支持指纹识别 预装WIN10系统
* title : 小米(MI)Air 13.3英寸全金属轻薄笔记本(i5-7200U 8G 256G PCle SSD MX150 2G独显 FHD 指纹识别 Win10)银
private String createtime;
private String detailUrl;
private String images;
private int num;
private int pid;
private int price;
private int pscid;
private int selected;
private int sellerid;
private String subhead;
private String title;
//子条目商品是否被选中的一个字段状态
private boolean isChildChoosed;
return isChildChoosed;
}
isChildChoosed = childChoosed;
}
return bargainPrice;
}
this.bargainPrice = bargainPrice;
}
return createtime;
}
this.createtime = createtime;
}
return detailUrl;
}
this.detailUrl = detailUrl;
}
return images;
}
this.images = images;
}
return num;
}
this.num = num;
}
return pid;
}
this.pid = pid;
}
return price;
}
this.price = price;
}
return pscid;
}
this.pscid = pscid;
}
return selected;
}
this.selected = selected;
}
return sellerid;
}
this.sellerid = sellerid;
}
return subhead;
}
this.subhead = subhead;
}
return title;
}
this.title = title;
}
}
}
}
import com.bwie.shoppcardemo.presenter.IShooppPrensenter;
import android.os.Handler;
import com.bwie.shoppcardemo.presenter.IShooppPrensenter;
import com.google.gson.Gson;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
private static Handler handler = new Handler();
public void getCarInfo(String uid, final IShooppPrensenter iShooppPrensenter) {
//创建OkHttpClient对象
OkHttpClient okHttpClient = new OkHttpClient();
.get()
.url("https://www.zhaoapi.cn/product/getCarts?uid="+uid+"&source=android")
.build();
Call call = okHttpClient.newCall(request);
@Override
public void onFailure(Call call, final IOException e) {
@Override
public void run() {
iShooppPrensenter.onFailed(e.getMessage());
}
});
public void onResponse(Call call, Response response) throws IOException {
Gson gson = new Gson();
final ShoppCarBean shoppCarBean = gson.fromJson(result, ShoppCarBean.class);
@Override
public void run() {
iShooppPrensenter.onSuccess(shoppCarBean.getData());
}
});
});
}
}
import com.bwie.shoppcardemo.bean.ShoppCarBean;
void onSuccess(List<ShoppCarBean.DataBean> data);
import com.bwie.shoppcardemo.model.IShoppCarModel;
import com.bwie.shoppcardemo.model.ShoppCarModel;
import com.bwie.shoppcardemo.view.activity.IMainView;
* Created by rookie on 2018/1/8.
*/
private IShoppCarModel iShoppCarModel;//多态
private IMainView iMainView;
this.iMainView = iMainView;
iShoppCarModel = new ShoppCarModel();
@Override
public void getCarInfo(String uid) {
@Override
public void onSuccess(List<ShoppCarBean.DataBean> data) {
if(iMainView != null){
iMainView.onSuccess(data);
}
public void onFailed(String msg) {
iMainView.onFailed(msg);
}
}
public void onDestory() {
if(iMainView != null)
{
iMainView = null;
}
}
}
* Created by rookie on 2018/1/9.
*/
void onSuccess(List<ShoppCarBean.DataBean> data);
}
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ExpandableListView;
import android.widget.TextView;
import android.widget.Toast;
import com.bwie.shoppcardemo.bean.ShoppCarBean;
import com.bwie.shoppcardemo.presenter.IShooppPrensenter;
import com.bwie.shoppcardemo.presenter.ShooppPresenter;
import com.bwie.shoppcardemo.view.adapter.MyExpandAdapter;
private MyExpandAdapter adapter;
private IShooppPrensenter iShooppPrensenter;
//
private List<ShoppCarBean.DataBean> list;
private CheckBox btnCheckAll;
//购买商品的总数量
private int totalNum = 0;
//购买商品的总价
private double totalPrice= 0.00; //15.55 15 0.55亿
private TextView tvTotalPrice;
private TextView btnAmount;
private TextView btnEditor;
private boolean flag;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//隐藏actionbar
getSupportActionBar().hide();
//购物车底部栏的全选框
btnCheckAll = findViewById(R.id.btnCheckAll);
//合计,计算总价
tvTotalPrice = findViewById(R.id.tvTotalPrice);
//结算按钮
btnAmount = findViewById(R.id.btnAmount);
//找到编辑控件
btnEditor = findViewById(R.id.btnEditor);
expandList.setGroupIndicator(null);
adapter = new MyExpandAdapter(this);
expandList.setAdapter(adapter);
iShooppPrensenter = new ShooppPresenter(this);
iShooppPrensenter.getCarInfo("4582");
//设置商品加减的监听
adapter.setModifyGoodsItemNumberListener(this);
//设置商家以及商品是否被选中的监听
adapter.setCheckGroupItemListener(this);
@Override
public void onClick(View view) {
//计算商品总价
statisticsPrice();
});
btnEditor.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
flag = true;
btnEditor.setText("完成");
adapter.showDeleteButton(flag);
}else{
flag = false;
btnEditor.setText("编辑");
adapter.showDeleteButton(flag);
}
});
private void defaultExpand(){
expandList.expandGroup(i);
}
@Override
public void onSuccess(List<ShoppCarBean.DataBean> data) {
adapter.setList(list);
}
public void onFailed(String msg) {
public void doIncrease(int groupPosition, int childPosition, View view) {
//取出当前的商品数量
int currentNum = listBean.getNum();
//商品++
currentNum++;
//将商品数量设置javabean上
listBean.setNum(currentNum);
adapter.notifyDataSetChanged();
//计算商品价格
statisticsPrice();
public void doDecrease(int groupPosition, int childPosition, View view) {
//Toast.makeText(this, "用户点击了商品减少操作", Toast.LENGTH_SHORT).show();
//取出当前的商品数量
int currentNum = listBean.getNum();
//直接结束这个方法
if(currentNum == 1){
return;
}
listBean.setNum(currentNum);
//刷新适配器
adapter.notifyDataSetChanged();
statisticsPrice();
}
@Override
public void checkGroupItem(int groupPosition, boolean isChecked) {
//Toast.makeText(this, "商家", Toast.LENGTH_SHORT).show();
//商家javabean
ShoppCarBean.DataBean dataBean = list.get(groupPosition);
dataBean.setGroupChoosed(isChecked);
//遍历商家里面的商品,将其置为选中状态
for (ShoppCarBean.DataBean.ListBean listBean : dataBean.getList()){
listBean.setChildChoosed(isChecked);
}
if(isCheckAll()){
btnCheckAll.setChecked(true);
}else{
btnCheckAll.setChecked(false);
}
adapter.notifyDataSetChanged();
statisticsPrice();
@Override
public void checkChildItem(int groupPosition, int childPosition, boolean isChecked) {
//Toast.makeText(this, "商品", Toast.LENGTH_SHORT).show();
//ShoppCarBean.DataBean.ListBean listBean = list.get(groupPosition).getList().get(childPosition);
List<ShoppCarBean.DataBean.ListBean> listBeans = dataBean.getList();
ShoppCarBean.DataBean.ListBean listBean = listBeans.get(childPosition);
listBean.setChildChoosed(isChecked);
boolean result = isGoodsCheckAll(groupPosition);
if(result){
dataBean.setGroupChoosed(result);
}else{
dataBean.setGroupChoosed(result);
}
if(isCheckAll()){
btnCheckAll.setChecked(true);
}else{
btnCheckAll.setChecked(false);
}
//刷新适配器
adapter.notifyDataSetChanged();
statisticsPrice();
* 检测某个商家的商品是否都选中,如果都选中的话,商家CheckBox应该是选中状态
* @param groupPosition
* @return
*/
private boolean isGoodsCheckAll(int groupPosition){
List<ShoppCarBean.DataBean.ListBean> listBeans = this.list.get(groupPosition).getList();
//遍历某一个商家的每个商品是否被选中
for (ShoppCarBean.DataBean.ListBean listBean : listBeans){
if(listBean.isChildChoosed()){//是选中状态
continue;
}else{
return false;
}
}
private boolean isCheckAll(){
if(!dataBean.isGroupChoosed()){
return false;
}
}
return true;
}
//全选与反选
private void isChoosedAll(boolean isChecked){
dataBean.setGroupChoosed(isChecked);
for (ShoppCarBean.DataBean.ListBean listBean : dataBean.getList()){
listBean.setChildChoosed(isChecked);
}
}
//刷新适配器
adapter.notifyDataSetChanged();
* 计算你所选中的商品总价
*/
private void statisticsPrice(){
totalNum = 0;
totalPrice = 0.00;
if(listBean.isChildChoosed()){
totalNum++;
System.out.println("number : "+totalNum);
totalPrice += listBean.getNum()*listBean.getPrice();
}
tvTotalPrice.setText("合计:¥"+totalPrice);
btnAmount.setText("结算("+totalNum+")");
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import com.bwie.shoppcardemo.R;
import com.bwie.shoppcardemo.bean.ShoppCarBean;
* Created by rookie on 2018/1/9.
*/
private List<ShoppCarBean.DataBean> data;
private Context context;
//商品加减的一个接口变量
private ModifyGoodsItemNumberListener modifyGoodsItemNumberListener;
private CheckGroupItemListener checkGroupItemListener;
//接收是否处于编辑状态的一个boolean值
private boolean isEditor;
this.context = context;
}
//设置数据
public void setList(List<ShoppCarBean.DataBean> data){
this.data = data;
notifyDataSetChanged();
}
//商家以及商品是否被选中的一个监听
public void setCheckGroupItemListener(CheckGroupItemListener checkGroupItemListener){
this.checkGroupItemListener = checkGroupItemListener;
}
public void setModifyGoodsItemNumberListener(ModifyGoodsItemNumberListener modifyGoodsItemNumberListener){
this.modifyGoodsItemNumberListener = modifyGoodsItemNumberListener;
}
public void showDeleteButton(boolean isEditor){
this.isEditor = isEditor;
//刷新适配器
notifyDataSetChanged();
}
public int getGroupCount() {
return data != null ? data.size() : 0;
}
public int getChildrenCount(int i) {
return data != null && data.get(i).getList() != null ? data.get(i).getList().size() : 0;
}
public Object getGroup(int groupPosition) {
return data.get(groupPosition);
}
public Object getChild(int groupPosition, int childPosition) {
return data.get(groupPosition).getList().get(childPosition);
}
public long getGroupId(int groupPosition) {
return groupPosition;
}
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
public boolean hasStableIds() {
return false;
}
public View getGroupView(final int groupPosition, boolean b, View convertView, ViewGroup parent) {
}
CheckBox ck_group_choosed = convertView.findViewById(R.id.ck_group_choosed);
if(data.get(groupPosition).isGroupChoosed()){
ck_group_choosed.setChecked(true);
}else{
ck_group_choosed.setChecked(false);
}
ck_group_choosed.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
});
//赋值
ck_group_choosed.setText(data.get(groupPosition).getSellerName());
return convertView;
}
public View getChildView(final int groupPosition, final int childPosition, boolean b, View convertView, ViewGroup parent) {
convertView = LayoutInflater.from(context).inflate(R.layout.layout_child_item,parent,false);
}
CheckBox ck_child_choosed = convertView.findViewById(R.id.ck_child_choose);
//商品图片
ImageView iv_show_pic = convertView.findViewById(R.id.iv_show_pic);
//商品主标题
TextView tv_commodity_name = convertView.findViewById(R.id.tv_commodity_name);
//商品副标题
TextView tv_commodity_attr = convertView.findViewById(R.id.tv_commodity_attr);
//商品价格
TextView tv_commodity_price = convertView.findViewById(R.id.tv_commodity_price);
//商品数量
TextView tv_commodity_num = convertView.findViewById(R.id.tv_commodity_num);
//商品减
TextView iv_sub = convertView.findViewById(R.id.iv_sub);
//商品加减中的数量变化
final TextView tv_commodity_show_num = convertView.findViewById(R.id.tv_commodity_show_num);
//商品加
TextView iv_add = convertView.findViewById(R.id.iv_add);
//删除按钮
Button btn_commodity_delete = convertView.findViewById(R.id.btn_commodity_delete);
tv_commodity_name.setText(data.get(groupPosition).getList().get(childPosition).getTitle());
tv_commodity_attr.setText(data.get(groupPosition).getList().get(childPosition).getSubhead());
tv_commodity_price.setText("¥"+data.get(groupPosition).getList().get(childPosition).getPrice());
tv_commodity_num.setText("x"+data.get(groupPosition).getList().get(childPosition).getNum());
tv_commodity_show_num.setText(data.get(groupPosition).getList().get(childPosition).getNum()+"");
String images = data.get(groupPosition).getList().get(childPosition).getImages();
//加载商品图片
Glide.with(context)
.load(urls[0])
.crossFade()
.into(iv_show_pic);
iv_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
//商品减
iv_sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
});
ck_child_choosed.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//isChecked false true
checkGroupItemListener.checkChildItem(groupPosition,childPosition,((CheckBox)view).isChecked());
}
});
if(data.get(groupPosition).getList().get(childPosition).isChildChoosed()){
ck_child_choosed.setChecked(true);
}else{
ck_child_choosed.setChecked(false);
}
if(isEditor){
btn_commodity_delete.setVisibility(View.VISIBLE);
}else{
btn_commodity_delete.setVisibility(View.GONE);
}
return convertView;
}
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
/**
* 商家的复选框以及商品的复选框是否被选中的接口
*/
/**
* 商家复选框以及商品复选框是否被选中接口
*/
public interface CheckGroupItemListener{
//商家的条目的复选框监听
void checkGroupItem(int groupPosition,boolean isChecked);
//商品的
void checkChildItem(int groupPosition,int childPosition,boolean isChecked);
}
* 商品加减接口
*/
public interface ModifyGoodsItemNumberListener{
void doIncrease(int groupPosition,int childPosition,View view);
//商品减少操作
void doDecrease(int groupPosition,int childPosition,View view);
}