• 二级列表购物车


    添加的依赖

      compile 'com.jakewharton:butterknife:8.2.1'
        apt 'com.jakewharton:butterknife-compiler:8.2.1'
        compile 'com.squareup.okhttp3:okhttp:3.9.0'
        compile 'com.squareup.okhttp3:logging-interceptor:3.9.0'
        compile 'com.google.code.gson:gson:2.8.2'
        compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
        compile 'org.greenrobot:eventbus:3.1.1'
    
    
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>

    activity_main

    <?xml version="1.0" encoding="utf-8"?>
    <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.bawie.www.gouwuche22.MainActivity">
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:background="#990000ff"
            android:gravity="center"
            android:text="购物车"
            android:textColor="#ff3660"
            android:textSize="25sp" />
    
        <ExpandableListView
            android:id="@+id/elv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_alignParentBottom="true"
            android:background="@android:color/white"
            android:gravity="center_vertical">
    
            <CheckBox
                android:id="@+id/checkbox2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_marginLeft="10dp"
                android:focusable="false" />
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:layout_centerVertical="true"
                android:layout_marginLeft="10dp"
                android:layout_toRightOf="@+id/checkbox2"
                android:gravity="center_vertical"
                android:text="全选"
                android:textSize="20sp" />
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:orientation="horizontal">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:text="合计 :" />
    
    
                <TextView
                    android:id="@+id/tv_price"
                    android:layout_width="wrap_content"
                    android:layout_height="50dp"
                    android:layout_marginLeft="10dp"
                    android:paddingRight="10dp"
                    android:text="0"
                    android:textColor="@android:color/holo_red_light" />
    
    
                <TextView
                    android:id="@+id/tv_num"
                    android:layout_width="wrap_content"
                    android:layout_height="50dp"
                    android:background="@android:color/holo_red_dark"
                    android:gravity="center"
                    android:padding="10dp"
                    android:text="结算(0)"
                    android:textColor="@android:color/white" />
            </LinearLayout>
        </RelativeLayout>
    </LinearLayout>

    item_child_market

    <?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="match_parent"
        android:background="@android:color/darker_gray"
        android:gravity="center_vertical"
        android:orientation="horizontal">
    
        <CheckBox
    
            android:id="@+id/cb_child"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="30dp"
            android:layout_marginLeft="40dp"
            android:layout_marginTop="30dp"
            android:focusable="false" />
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
    
            <TextView
                android:id="@+id/tv_tel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:text="iphone6" />
    
            <TextView
                android:id="@+id/tv_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:text="什么手机" />
    
            <TextView
                android:id="@+id/tv_time"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:text="2016-12-10" />
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical">
    
            <TextView
                android:id="@+id/tv_pri"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
    
                android:text="¥3000.00" />
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical">
    
                <ImageView
                    android:id="@+id/iv_del"
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:src="@drawable/shopcart_minus_grey" />
    
                <TextView
                    android:id="@+id/tv_num"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:background="@drawable/shopcart_add_btn"
                    android:paddingBottom="2dp"
                    android:paddingLeft="20dp"
                    android:paddingRight="20dp"
                    android:paddingTop="2dp"
                    android:text="1" />
    
                <ImageView
                    android:id="@+id/iv_add"
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:layout_marginLeft="5dp"
                    android:src="@drawable/shopcart_add_red" />
    
            </LinearLayout>
    
        </LinearLayout>
    
        <TextView
            android:id="@+id/tv_del"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="删除" />
    </LinearLayout>

    item_parment_market

    <?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="100dp"
        android:gravity="center_vertical"
        android:orientation="horizontal">
    
        <CheckBox
            android:id="@+id/cb_parent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="30dp"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="30dp"
            android:focusable="false" />
    
        <TextView
            android:id="@+id/tv_sign"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:text="标记" />
    
        <TextView
            android:id="@+id/tv_number"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:text="12345678" />
    
    </LinearLayout>

    MainActivity

    package com.bawie.www.gouwuche22;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.CheckBox;
    import android.widget.ExpandableListView;
    import android.widget.TextView;
    
    import com.bawie.www.gouwuche22.adapter.MyAdapter;
    import com.bawie.www.gouwuche22.bean.GoosBean;
    import com.bawie.www.gouwuche22.eventbusevent.MessageEvent;
    import com.bawie.www.gouwuche22.eventbusevent.PriceAndCountEvent;
    import com.bawie.www.gouwuche22.presenter.MainPresenter;
    
    import org.greenrobot.eventbus.EventBus;
    import org.greenrobot.eventbus.Subscribe;
    
    import java.util.List;
    
    public class MainActivity extends AppCompatActivity implements IMainActivity{
        private ExpandableListView mElv;
        private CheckBox mCheckbox2;
        /**
         * 0
         */
        private TextView mTvPrice;
        /**
         * 结算(0)
         */
        private TextView mTvNum;
        private MyAdapter adapter;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            EventBus.getDefault().register(this);
            initView();
            new MainPresenter(this).getGoods();
            mCheckbox2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    adapter.changeAllListCbState(mCheckbox2.isChecked());
                }
            });
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            EventBus.getDefault().unregister(this);
    
        }
    
        private void initView() {
            mElv = (ExpandableListView) findViewById(R.id.elv);
            mCheckbox2 = (CheckBox) findViewById(R.id.checkbox2);
            mTvPrice = (TextView) findViewById(R.id.tv_price);
            mTvNum = (TextView) findViewById(R.id.tv_num);
        }
    
        @Override
        public void showList(List<GoosBean.DataBean> groupList, List<List<GoosBean.DataBean.DatasBean>> childList) {
            adapter = new MyAdapter(this, groupList, childList);
            mElv.setAdapter(adapter);
            mElv.setGroupIndicator(null);
            //默认让其全部展开
            for (int i = 0; i < groupList.size(); i++) {
                mElv.expandGroup(i);
            }
        }
    
        @Subscribe
        public void onMessageEvent(MessageEvent event) {
            mCheckbox2.setChecked(event.isChecked());
        }
    
        @Subscribe
        public void onMessageEvent(PriceAndCountEvent event) {
            mTvNum.setText("结算(" + event.getCount() + ")");
            mTvPrice.setText(event.getPrice() + "");
        }
    }

    接口IMactivity

    package com.bawie.www.gouwuche22;
    
    import com.bawie.www.gouwuche22.bean.GoosBean;
    
    import java.util.List;
    
    
    /**
     * Created by peng on 2017/11/16.
     */
    
    public interface IMainActivity {
        public void showList(List<GoosBean.DataBean> groupList, List<List<GoosBean.DataBean.DatasBean>> childList);
    }

    MainPresenter

    package com.bawie.www.gouwuche22.presenter;
    
    import com.bawie.www.gouwuche22.IMainActivity;
    import com.bawie.www.gouwuche22.bean.GoosBean;
    import com.bawie.www.gouwuche22.mode.IMainModel;
    import com.bawie.www.gouwuche22.mode.MainModel;
    import com.bawie.www.gouwuche22.net.OnNetListener;
    
    import java.util.ArrayList;
    import java.util.List;
    
    
    /**
     * Created by peng on 2017/11/16.
     */
    
    public class MainPresenter {
    
        private final IMainModel imainModel;
        private final IMainActivity iMainActivity;
    
        public MainPresenter(IMainActivity iMainActivity) {
            this.iMainActivity = iMainActivity;
            imainModel = new MainModel();
        }
    
        public void getGoods() {
            imainModel.getGoods(new OnNetListener<GoosBean>() {
                @Override
                public void onSuccess(GoosBean goosBean) {
                    //List<GoosBean.DataBean> groupList, List<List<GoosBean.DataBean.DatasBean>> childList
                    List<GoosBean.DataBean> dataBean = goosBean.getData();
                    List<List<GoosBean.DataBean.DatasBean>> childList = new ArrayList<List<GoosBean.DataBean.DatasBean>>();
                    for (int i = 0; i < dataBean.size(); i++) {
                        List<GoosBean.DataBean.DatasBean> datas = dataBean.get(i).getDatas();
                        childList.add(datas);
                    }
                    iMainActivity.showList(dataBean, childList);
                }
    
                @Override
                public void onFailure(Exception e) {
    
                }
            });
    
        }
    }

    接口OnNetListener

    package com.bawie.www.gouwuche22.net;
    
    /**
     * Created by peng on 2017/11/16.
     */
    
    public interface OnNetListener<T> {
        public void onSuccess(T t);
    
        public void onFailure(Exception e);
    }

    OkHttpUtils

    package com.bawie.www.gouwuche22.net;
    
    import okhttp3.Callback;
    import okhttp3.OkHttpClient;
    import okhttp3.Request;
    import okhttp3.logging.HttpLoggingInterceptor;
    
    /**
     * Created by peng on 2017/11/16.
     */
    
    public class HttpUtils {
        private static volatile HttpUtils httpUtils;
        private final OkHttpClient client;
    
        private HttpUtils() {
            HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
            logging.setLevel(HttpLoggingInterceptor.Level.BODY);
            client = new OkHttpClient.Builder()
                    .addInterceptor(logging)
                    .build();
        }
    
        public static HttpUtils getHttpUtils() {
            if (httpUtils == null) {
                synchronized (HttpUtils.class) {
                    if (httpUtils == null) {
                        httpUtils = new HttpUtils();
                    }
                }
            }
            return httpUtils;
        }
    
        /**
         * GET请求
         *
         * @param url
         * @param callback
         */
        public void doGet(String url, Callback callback) {
            Request request = new Request.Builder().url(url).build();
            client.newCall(request).enqueue(callback);
        }
    }

    APi

    package com.bawie.www.gouwuche22.net;
    
    /**
     * Created by peng on 2017/11/16.
     */
    
    public interface Api {
        public static final String url = "http://result.eolinker.com/iYXEPGn4e9c6dafce6e5cdd23287d2bb136ee7e9194d3e9?uri=evaluation";
    }

    IMainModel

    package com.bawie.www.gouwuche22.mode;
    
    
    import com.bawie.www.gouwuche22.bean.GoosBean;
    import com.bawie.www.gouwuche22.net.OnNetListener;
    
    /**
     * Created by peng on 2017/11/16.
     */
    
    public interface IMainModel {
        public void getGoods(OnNetListener<GoosBean> onNetListener);
    }

    MainMolder

    package com.bawie.www.gouwuche22.mode;
    
    import android.os.Handler;
    import android.os.Looper;
    
    import com.bawie.www.gouwuche22.bean.GoosBean;
    import com.bawie.www.gouwuche22.net.Api;
    import com.bawie.www.gouwuche22.net.HttpUtils;
    import com.bawie.www.gouwuche22.net.OnNetListener;
    import com.google.gson.Gson;
    
    import java.io.IOException;
    import okhttp3.Call;
    import okhttp3.Callback;
    import okhttp3.Response;
    
    /**
     * Created by peng on 2017/11/16.
     */
    
    public class MainModel implements IMainModel {
        private Handler handler = new Handler(Looper.getMainLooper());
    
    
        public void getGoods(final OnNetListener<GoosBean> onNetListener) {
            HttpUtils.getHttpUtils().doGet(Api.url, new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
    
                }
    
                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    String string = response.body().string();
                    final GoosBean goosBean = new Gson().fromJson(string, GoosBean.class);
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            onNetListener.onSuccess(goosBean);
                        }
                    });
                }
            });
        }
    }

    MessageEvent

    package com.bawie.www.gouwuche22.eventbusevent;
    
    /**
     * Created by peng on 2017/11/17.
     */
    
    public class MessageEvent {
        private boolean checked;
    
        public boolean isChecked() {
            return checked;
        }
    
        public void setChecked(boolean checked) {
            this.checked = checked;
        }
    }
    PriceAndCountEvent
    package com.bawie.www.gouwuche22.eventbusevent;
    
    /**
     * Created by peng on 2017/11/17.
     */
    
    public class PriceAndCountEvent {
        private int price;
        private int count;
    
        public int getPrice() {
            return price;
        }
    
        public void setPrice(int price) {
            this.price = price;
        }
    
        public int getCount() {
            return count;
        }
    
        public void setCount(int count) {
            this.count = count;
        }
    }
    MyAdapter
    package com.bawie.www.gouwuche22.adapter;
    
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseExpandableListAdapter;
    import android.widget.CheckBox;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import com.bawie.www.gouwuche22.R;
    import com.bawie.www.gouwuche22.bean.GoosBean;
    import com.bawie.www.gouwuche22.eventbusevent.MessageEvent;
    import com.bawie.www.gouwuche22.eventbusevent.PriceAndCountEvent;
    
    import org.greenrobot.eventbus.EventBus;
    
    import java.util.List;
    
    
    
    /**
     * Created by peng on 2017/11/16.
     */
    
    public class MyAdapter extends BaseExpandableListAdapter {
        private Context context;
        private List<GoosBean.DataBean> groupList;
        private List<List<GoosBean.DataBean.DatasBean>> childList;
        private final LayoutInflater inflater;
    
        public MyAdapter(Context context, List<GoosBean.DataBean> groupList, List<List<GoosBean.DataBean.DatasBean>> childList) {
            this.context = context;
            this.groupList = groupList;
            this.childList = childList;
            inflater = LayoutInflater.from(context);
        }
    
        @Override
        public int getGroupCount() {
            return groupList.size();
        }
    
        @Override
        public int getChildrenCount(int groupPosition) {
            return childList.get(groupPosition).size();
        }
    
        @Override
        public Object getGroup(int groupPosition) {
            return groupList.get(groupPosition);
        }
    
        @Override
        public Object getChild(int groupPosition, int childPosition) {
            return childList.get(groupPosition).get(childPosition);
        }
    
        @Override
        public long getGroupId(int groupPosition) {
            return groupPosition;
        }
    
        @Override
        public long getChildId(int groupPosition, int childPosition) {
            return childPosition;
        }
    
        @Override
        public boolean hasStableIds() {
            return false;
        }
    
        @Override
        public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
            View view;
            final GroupViewHolder holder;
            if (convertView == null) {
                holder = new GroupViewHolder();
                view = inflater.inflate(R.layout.item_parent_market, null);
                holder.cbGroup = (CheckBox) view.findViewById(R.id.cb_parent);
                holder.tv_number = (TextView) view.findViewById(R.id.tv_number);
                view.setTag(holder);
            } else {
                view = convertView;
                holder = (GroupViewHolder) view.getTag();
            }
            final GoosBean.DataBean dataBean = groupList.get(groupPosition);
            holder.cbGroup.setChecked(dataBean.isChecked());
            holder.tv_number.setText(dataBean.getTitle());
            //一级checkbox
            holder.cbGroup.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dataBean.setChecked(holder.cbGroup.isChecked());
                    changeChildCbState(groupPosition, holder.cbGroup.isChecked());
                    EventBus.getDefault().post(compute());
                    changeAllCbState(isAllGroupCbSelected());
                    notifyDataSetChanged();
                }
            });
    
            return view;
        }
    
        @Override
        public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
            View view;
            final ChildViewHolder holder;
            if (convertView == null) {
                holder = new ChildViewHolder();
                view = inflater.inflate(R.layout.item_child_market, null);
                holder.cbChild = (CheckBox) view.findViewById(R.id.cb_child);
                holder.tv_tel = (TextView) view.findViewById(R.id.tv_tel);
                holder.tv_content = (TextView) view.findViewById(R.id.tv_content);
                holder.tv_time = (TextView) view.findViewById(R.id.tv_time);
                holder.tv_price = (TextView) view.findViewById(R.id.tv_pri);
                holder.tv_del = (TextView) view.findViewById(R.id.tv_del);
                holder.iv_add = (ImageView) view.findViewById(R.id.iv_add);
                holder.iv_del = (ImageView) view.findViewById(R.id.iv_del);
                holder.tv_num = (TextView) view.findViewById(R.id.tv_num);
                view.setTag(holder);
            } else {
                view = convertView;
                holder = (ChildViewHolder) view.getTag();
            }
            final GoosBean.DataBean.DatasBean datasBean = childList.get(groupPosition).get(childPosition);
            holder.cbChild.setChecked(datasBean.isChecked());
            holder.tv_tel.setText(datasBean.getType_name());
            holder.tv_content.setText(datasBean.getMsg());
            holder.tv_time.setText(datasBean.getAdd_time());
            holder.tv_price.setText(datasBean.getPrice() + "");
            holder.tv_num.setText(datasBean.getNum() + "");
    
            //二级checkbox
            holder.cbChild.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //设置该条目对象里的checked属性值
                    datasBean.setChecked(holder.cbChild.isChecked());
                    PriceAndCountEvent priceAndCountEvent = compute();
                    EventBus.getDefault().post(priceAndCountEvent);
    
                    if (holder.cbChild.isChecked()) {
                        //当前checkbox是选中状态
                        if (isAllChildCbSelected(groupPosition)) {
                            changGroupCbState(groupPosition, true);
                            changeAllCbState(isAllGroupCbSelected());
                        }
                    } else {
                        changGroupCbState(groupPosition, false);
                        changeAllCbState(isAllGroupCbSelected());
                    }
                    notifyDataSetChanged();
                }
            });
            //加号
            holder.iv_add.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int num = datasBean.getNum();
                    holder.tv_num.setText(++num + "");
                    datasBean.setNum(num);
                    if (holder.cbChild.isChecked()) {
                        PriceAndCountEvent priceAndCountEvent = compute();
                        EventBus.getDefault().post(priceAndCountEvent);
                    }
                }
            });
            //减号
            holder.iv_del.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int num = datasBean.getNum();
                    if (num == 1) {
                        return;
                    }
                    holder.tv_num.setText(--num + "");
                    datasBean.setNum(num);
                    if (holder.cbChild.isChecked()) {
                        PriceAndCountEvent priceAndCountEvent = compute();
                        EventBus.getDefault().post(priceAndCountEvent);
                    }
                }
            });
            //删除
            holder.tv_del.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    List<GoosBean.DataBean.DatasBean> datasBeen = childList.get(groupPosition);
                    GoosBean.DataBean.DatasBean remove = datasBeen.remove(childPosition);
                    if (datasBeen.size() == 0) {
                        childList.remove(groupPosition);
                        groupList.remove(groupPosition);
                    }
                    EventBus.getDefault().post(compute());
                    notifyDataSetChanged();
                }
            });
            return view;
        }
    
        @Override
        public boolean isChildSelectable(int groupPosition, int childPosition) {
            return true;
        }
    
        class GroupViewHolder {
            CheckBox cbGroup;
            TextView tv_number;
        }
    
        class ChildViewHolder {
            CheckBox cbChild;
            TextView tv_tel;
            TextView tv_content;
            TextView tv_time;
            TextView tv_price;
            TextView tv_del;
            ImageView iv_del;
            ImageView iv_add;
            TextView tv_num;
        }
    
        /**
         * 改变全选的状态
         *
         * @param flag
         */
        private void changeAllCbState(boolean flag) {
            MessageEvent messageEvent = new MessageEvent();
            messageEvent.setChecked(flag);
            EventBus.getDefault().post(messageEvent);
        }
    
        /**
         * 改变一级列表checkbox状态
         *
         * @param groupPosition
         */
        private void changGroupCbState(int groupPosition, boolean flag) {
            GoosBean.DataBean dataBean = groupList.get(groupPosition);
            dataBean.setChecked(flag);
        }
    
        /**
         * 改变二级列表checkbox状态
         *
         * @param groupPosition
         * @param flag
         */
        private void changeChildCbState(int groupPosition, boolean flag) {
            List<GoosBean.DataBean.DatasBean> datasBeen = childList.get(groupPosition);
            for (int i = 0; i < datasBeen.size(); i++) {
                GoosBean.DataBean.DatasBean datasBean = datasBeen.get(i);
                datasBean.setChecked(flag);
            }
        }
    
        /**
         * 判断一级列表是否全部选中
         *
         * @return
         */
        private boolean isAllGroupCbSelected() {
            for (int i = 0; i < groupList.size(); i++) {
                GoosBean.DataBean dataBean = groupList.get(i);
                if (!dataBean.isChecked()) {
                    return false;
                }
            }
            return true;
        }
    
        /**
         * 判断二级列表是否全部选中
         *
         * @param groupPosition
         * @return
         */
        private boolean isAllChildCbSelected(int groupPosition) {
            List<GoosBean.DataBean.DatasBean> datasBeen = childList.get(groupPosition);
            for (int i = 0; i < datasBeen.size(); i++) {
                GoosBean.DataBean.DatasBean datasBean = datasBeen.get(i);
                if (!datasBean.isChecked()) {
                    return false;
                }
            }
            return true;
        }
    
        /**
         * 计算列表中,选中的钱和数量
         */
        private PriceAndCountEvent compute() {
            int count = 0;
            int price = 0;
            for (int i = 0; i < childList.size(); i++) {
                List<GoosBean.DataBean.DatasBean> datasBeen = childList.get(i);
                for (int j = 0; j < datasBeen.size(); j++) {
                    GoosBean.DataBean.DatasBean datasBean = datasBeen.get(j);
                    if (datasBean.isChecked()) {
                        price += datasBean.getNum() * datasBean.getPrice();
                        count += datasBean.getNum();
                    }
                }
            }
            PriceAndCountEvent priceAndCountEvent = new PriceAndCountEvent();
            priceAndCountEvent.setCount(count);
            priceAndCountEvent.setPrice(price);
            return priceAndCountEvent;
        }
    
        /**
         * 设置全选、反选
         *
         * @param flag
         */
        public void changeAllListCbState(boolean flag) {
            for (int i = 0; i < groupList.size(); i++) {
                changGroupCbState(i, flag);
                changeChildCbState(i, flag);
            }
            EventBus.getDefault().post(compute());
            notifyDataSetChanged();
        }
    
    }

    GoosBean

    http://result.eolinker.com/iYXEPGn4e9c6dafce6e5cdd23287d2bb136ee7e9194d3e9?uri=evaluation

    style

    <resources>
    
        <!-- Base application theme. -->
        <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
        </style>
    
    </resources>
  • 相关阅读:
    JS-字符串截取方法slice、substring、substr的区别
    Vue中computed和watch的区别
    Vue响应式原理及总结
    JS实现深浅拷贝
    JS中new操作符源码实现
    点击页面出现爱心效果
    js判断对象是否为空对象的几种方法
    深入浅出js实现继承的7种方式
    es6-class
    详解 ESLint 规则,规范你的代码
  • 原文地址:https://www.cnblogs.com/yu12/p/7883682.html
Copyright © 2020-2023  润新知