天天看點

Android購物車的總結

購物車布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.newshoppcart.view.ShoppCartActivity">

    <RelativeLayout
        android:id="@+id/text_title"
        android:layout_width="match_parent"
        android:layout_height="50dp">

        <ImageView
            android:layout_centerVertical="true"
            android:id="@+id/detail_image_back"
            android:padding="5dp"
            android:src="@drawable/leftjiantou"
            android:layout_width="40dp"
            android:layout_height="40dp" />

        <TextView
            android:layout_centerInParent="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textSize="18sp"
            android:padding="10dp"
            android:text="購物車" />

    </RelativeLayout>

    <com.scwang.smartrefresh.layout.SmartRefreshLayout
        android:layout_below="@+id/text_title"
        android:layout_above="@+id/linear_bottom"
        android:id="@+id/smart_refresh"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scrollbars="none">

                <!--二級清單登入的按鈕-->
                <com.example.newshoppcart.view.custom.MyExpanableView
                    android:id="@+id/my_expanable_view"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:visibility="gone">

                </com.example.newshoppcart.view.custom.MyExpanableView>

        </ScrollView>

    </com.scwang.smartrefresh.layout.SmartRefreshLayout>

    <RelativeLayout
        android:layout_above="@+id/linear_bottom"
        android:layout_below="@+id/text_title"
        android:id="@+id/relative_progress"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone">

        <ProgressBar
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true" />

    </RelativeLayout>


    <LinearLayout
        android:id="@+id/linear_bottom"
        android:layout_alignParentBottom="true"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="50dp">

        <CheckBox
            android:button="@null"
            android:background="@drawable/check_box_selector"
            android:layout_marginLeft="10dp"
            android:id="@+id/cart_check_all"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <TextView
            android:layout_marginLeft="5dp"
            android:text="全選"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:textSize="20sp"
            android:layout_marginLeft="10dp"
            android:id="@+id/text_total"
            android:text="合計:¥0.00"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content" />


        <TextView
            android:paddingLeft="15dp"
            android:paddingRight="15dp"
            android:paddingTop="10dp"
            android:paddingBottom="10dp"
            android:id="@+id/text_buy"
            android:gravity="center"
            android:background="#ff0000"
            android:textColor="#ffffff"
            android:text="去結算(0)"
            android:layout_width="wrap_content"
            android:layout_height="match_parent" />

    </LinearLayout>

</RelativeLayout>
           

全選用到的背景shape

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_checked="true" android:drawable="@drawable/shopping_cart_checked"/>
    <item android:state_checked="false" android:drawable="@drawable/shopping_cart_none_check"/>
    <item android:drawable="@drawable/shopping_cart_none_check"/>

</selector>
           

自定義二級清單

public class MyExpanableView extends ExpandableListView {
    public MyExpanableView(Context context) {
        super(context);
    }

    public MyExpanableView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyExpanableView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

        //Integer.MAX_VALUE >>2 移動兩位
        int height = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>,MeasureSpec.AT_MOST);

        super.onMeasure(widthMeasureSpec, height);
    }
}
           

在擷取的資料bean裡自己定義一個方法

//自己手動建立一個變量 生成set get方法....記錄組的checkBox是否選中
        private boolean isGroupChecked;

        public boolean isGroupChecked() {
            return isGroupChecked;
        }

        public void setGroupChecked(boolean groupChecked) {
            isGroupChecked = groupChecked;
        }
           

二級清單的擴充卡包括資料加減

public class MyExpanableAdapter extends BaseExpandableListAdapter{
    private FragmentCartPresenter fragmentCartPresenter;
    private RelativeLayout relative_progress;
    private Handler handler;
    private CartBean cartBean;
    private Context context;
    private DecimalFormat decimalFormat = new DecimalFormat("0.00");
    private int childIndex;
    private int allIndex;

    public MyExpanableAdapter(Context context, CartBean cartBean, Handler handler, RelativeLayout relative_progress, FragmentCartPresenter fragmentCartPresenter) {
        this.context = context;
        this.cartBean = cartBean;
        this.handler = handler;
        this.relative_progress = relative_progress;
        this.fragmentCartPresenter = fragmentCartPresenter;
    }

    @Override
    public int getGroupCount() {
        return cartBean.getData().size();
    }

    //一組裡面有多少個子條目...cartBean.getData().get(groupPosition).getList(),,某一個組裡面子條目的資料
    @Override
    public int getChildrenCount(int groupPosition) {
        return cartBean.getData().get(groupPosition).getList().size();
    }

    //cartBean.getData().get(groupPosition)某個組的資料
    @Override
    public Object getGroup(int groupPosition) {
        return cartBean.getData().get(groupPosition);
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return cartBean.getData().get(groupPosition).getList().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 true;
    }

    @Override
    public View getGroupView(int groupPosition, boolean b, View view, ViewGroup viewGroup) {
        final GroupHolder holder;
        if (view == null) {
            view = View.inflate(context, R.layout.cart_group_item_layout,null);
            holder = new GroupHolder();

            holder.group_check_box = view.findViewById(R.id.group_check_box);
            holder.group_shop_name = view.findViewById(R.id.group_shop_name);

            view.setTag(holder);
        }else {
            holder = (GroupHolder) view.getTag();
        }

        //指派..checkBox設定是否選中...商家設定名字
        final CartBean.DataBean dataBean = cartBean.getData().get(groupPosition);

        holder.group_shop_name.setText(dataBean.getSellerName());
        holder.group_check_box.setChecked(dataBean.isGroupChecked());

        //設定點選事件
        holder.group_check_box.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                //顯示progress
                relative_progress.setVisibility(View.VISIBLE);

                childIndex = ;
                //根據商家是否選中的狀态,,,去更新所有子孩子的狀态
                updateChildInGroup(holder.group_check_box.isChecked(),dataBean);

            }
        });

        return view;
    }

    /**
     * 根據組的狀态...根據所有裡面的子孩子
     * @param checked 表示組是否選中
     * @param dataBean
     */
    private void updateChildInGroup(final boolean checked, final CartBean.DataBean dataBean) {

        CartBean.DataBean.ListBean listBean = dataBean.getList().get(childIndex);

        //更新購物車
        //更新購物車....跟新目前商品是否能選中的狀态...selected值
        Map<String, String> params = new HashMap<>();
        //?uid=71&sellerid=1&pid=1&selected=0&num=10
        params.put("uid", CommonUtils.getString("uid"));
        params.put("sellerid", String.valueOf(listBean.getSellerid()));
        params.put("pid", String.valueOf(listBean.getPid()));

        params.put("selected", String.valueOf(checked ? :));

        params.put("num", String.valueOf(listBean.getNum()));

        OkHttp3Util_03.doPost(ApiUtil.UPDATE_CART_URL, params, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response.isSuccessful()) {
                    childIndex ++;

                    if (childIndex < dataBean.getList().size()) {
                        //可以繼續更新
                        updateChildInGroup(checked,dataBean);


                    }else {
                        //已經全部更新完成....重新查詢購物車資料,顯示
                        fragmentCartPresenter.getCartData(ApiUtil.SELECT_CART,CommonUtils.getString("uid"));

                    }

                }
            }
        });

    }

    @Override
    public View getChildView(int groupPosition, int childPosition, boolean b, View view, ViewGroup viewGroup) {

        ChildHolder holder;
        if (view == null) {
            view = View.inflate(context,R.layout.cart_child_item_layout,null);
            holder = new ChildHolder();

            holder.child_check_box = view.findViewById(R.id.child_check_box);
            holder.child_image = view.findViewById(R.id.child_image);
            holder.child_title = view.findViewById(R.id.child_title);
            holder.child_text_add = view.findViewById(R.id.child_text_add);
            holder.child_text_num = view.findViewById(R.id.child_text_num);
            holder.child_text_jian = view.findViewById(R.id.child_text_jian);
            holder.child_price = view.findViewById(R.id.child_price);
            holder.child_text_delete = view.findViewById(R.id.child_text_delete);

            view.setTag(holder);
        }else {
            holder = (ChildHolder) view.getTag();
        }

        //指派
        final CartBean.DataBean.ListBean listBean = cartBean.getData().get(groupPosition).getList().get(childPosition);
        設定子條目是否選中...selected : 1,,0表示不選中,1表示選中
        holder.child_check_box.setChecked(listBean.getSelected() ==  ? true :false);

        Glide.with(context).load(listBean.getImages().split("\\|")[]).into(holder.child_image);
        holder.child_title.setText(listBean.getTitle());

        //一個double類型的值保留兩位小數
        holder.child_price.setText("¥"+decimalFormat.format(listBean.getBargainPrice()));
        //注意:----text設定文本的時候一定要是string類型
        holder.child_text_num.setText(String.valueOf(listBean.getNum()));

        //checkBox點選事件
        holder.child_check_box.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //顯示progressBar
                relative_progress.setVisibility(View.VISIBLE);
                //更新購物車....跟新目前商品是否能選中的狀态...selected值
                Map<String, String> params = new HashMap<>();
                //?uid=71&sellerid=1&pid=1&selected=0&num=10
                params.put("uid", CommonUtils.getString("uid"));
                params.put("sellerid", String.valueOf(listBean.getSellerid()));
                params.put("pid", String.valueOf(listBean.getPid()));

                //此時需要selected是否選中...傳什麼值過去?如果目前是1 傳0,,如果是0,,傳1
                params.put("selected", String.valueOf(listBean.getSelected()== ? :));
                params.put("num", String.valueOf(listBean.getNum()));

                OkHttp3Util_03.doPost(ApiUtil.UPDATE_CART_URL, params, new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {

                    }

                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        if (response.isSuccessful()) {
                            //更新成功之後....重新查詢一下購物車的資料,然後進行展示
                            fragmentCartPresenter.getCartData(ApiUtil.SELECT_CART,CommonUtils.getString("uid"));
                        }
                    }
                });

            }
        });

        //加
        holder.child_text_add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //顯示progressBar
                relative_progress.setVisibility(View.VISIBLE);
                //更新購物車....跟新目前商品是否能選中的狀态...selected值
                Map<String, String> params = new HashMap<>();
                //?uid=71&sellerid=1&pid=1&selected=0&num=10
                params.put("uid", CommonUtils.getString("uid"));
                params.put("sellerid", String.valueOf(listBean.getSellerid()));
                params.put("pid", String.valueOf(listBean.getPid()));
                params.put("selected", String.valueOf(listBean.getSelected()));

                //num+1
                params.put("num", String.valueOf(listBean.getNum() +));

                OkHttp3Util_03.doPost(ApiUtil.UPDATE_CART_URL, params, new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {

                    }

                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        if (response.isSuccessful()) {
                            //更新成功之後....重新查詢一下購物車的資料,然後進行展示
                            fragmentCartPresenter.getCartData(ApiUtil.SELECT_CART,CommonUtils.getString("uid"));
                        }
                    }
                });

            }

        });
        //減
        holder.child_text_jian.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                int num = listBean.getNum();
                if (num == ) {
                    return;
                }

                //顯示progressBar
                relative_progress.setVisibility(View.VISIBLE);

                //更新購物車....跟新目前商品是否能選中的狀态...selected值
                Map<String, String> params = new HashMap<>();
                //?uid=71&sellerid=1&pid=1&selected=0&num=10
                params.put("uid", CommonUtils.getString("uid"));
                params.put("sellerid", String.valueOf(listBean.getSellerid()));
                params.put("pid", String.valueOf(listBean.getPid()));
                params.put("selected", String.valueOf(listBean.getSelected()));

                params.put("num", String.valueOf(num -));

                OkHttp3Util_03.doPost(ApiUtil.UPDATE_CART_URL, params, new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {

                    }

                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        if (response.isSuccessful()) {
                            //更新成功之後....重新查詢一下購物車的資料,然後進行展示
                            fragmentCartPresenter.getCartData(ApiUtil.SELECT_CART,CommonUtils.getString("uid"));
                        }
                    }
                });

            }

        });
        //删除
        holder.child_text_delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //顯示progress
                relative_progress.setVisibility(View.VISIBLE);
                //請求删除購物車的接口...删除成功之後 再次請求查詢購物車
                Map<String, String> params = new HashMap<>();
                //?uid=72&pid=1
                params.put("uid",CommonUtils.getString("uid"));
                params.put("pid", String.valueOf(listBean.getPid()));

                OkHttp3Util_03.doPost(ApiUtil.DELETE_CART_URL, params, new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {

                    }

                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        if (response.isSuccessful()) {

                            //查詢購物車的資料
                            fragmentCartPresenter.getCartData(ApiUtil.SELECT_CART,CommonUtils.getString("uid"));

                        }
                    }
                });


            }
        });

        return view;
    }

    //如果傳回false 子條目不可以點選
    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }

    /**
     * 計算價格和數量....發送給fragment進行顯示
     */
    public void sendPriceAndCount() {

        double price = ;
        int count = ;

        for (int  i= ;i<cartBean.getData().size();i++) {
            //周遊每一組裡面的子孩子
            List<CartBean.DataBean.ListBean> list = cartBean.getData().get(i).getList();
            for (int j = ; j< list.size(); j++) {
                //判斷每一個子孩子是否選中,,,如果選中計算價格和數量
                if (list.get(j).getSelected() == ) {
                    price = price + list.get(j).getBargainPrice() * list.get(j).getNum();

                    count += list.get(j).getNum();
                }
            }
        }

        String priceString = decimalFormat.format(price);

        CountPriceBean countPriceBean = new CountPriceBean(priceString, count);
        //去顯示價格和數量
        Message msg = Message.obtain();
        msg.what = ;
        msg.obj = countPriceBean;

        handler.sendMessage(msg);

    }

    /**
     * 點選全選的時候,,,,根據全選的狀态 改變購物車所有商品的選中狀态
     * @param checked 全選的狀态
     */
    public void setAllChildChecked(boolean checked) {

        //改變購物車所有商品的選中狀态...要有這些所有的商品...建立一個結合裝所有的商品
        List<CartBean.DataBean.ListBean> allList = new ArrayList<>();
        for (int i = ;i<cartBean.getData().size();i++) {
            List<CartBean.DataBean.ListBean> list = cartBean.getData().get(i).getList();
            for (int j = ; j< list.size(); j++) {

                allList.add(list.get(j));
            }
        }

        //progress
        relative_progress.setVisibility(View.VISIBLE);

        allIndex = ;//從第一條開始  索引是0
        //操作這個allList集合
        updateAllChild(allList,checked);


    }

    /**
     * 跟新所有的子條目
     * @param allList
     * @param checked
     */
    private void updateAllChild(final List<CartBean.DataBean.ListBean> allList, final boolean checked) {
        //第一條開始
        CartBean.DataBean.ListBean listBean = allList.get(allIndex);

        //更新購物車....跟新目前商品是否能選中的狀态...selected值
        Map<String, String> params = new HashMap<>();
        //?uid=71&sellerid=1&pid=1&selected=0&num=10
        params.put("uid", CommonUtils.getString("uid"));
        params.put("sellerid", String.valueOf(listBean.getSellerid()));
        params.put("pid", String.valueOf(listBean.getPid()));

        params.put("selected", String.valueOf(checked ? :));

        params.put("num", String.valueOf(listBean.getNum()));

        OkHttp3Util_03.doPost(ApiUtil.UPDATE_CART_URL, params, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response.isSuccessful()) {

                    //成功之後索引+1
                    allIndex ++;
                    if (allIndex <allList.size()) {
                        //繼續更新下一條
                        updateAllChild(allList,checked);
                    }else {
                        //代表全部更新完畢....請求查詢購物車的資料
                        fragmentCartPresenter.getCartData(ApiUtil.SELECT_CART,CommonUtils.getString("uid"));
                    }

                }
            }
        });

    }

    private class GroupHolder{
        CheckBox group_check_box;
        TextView group_shop_name;
    }

    private class ChildHolder{
        CheckBox child_check_box;
        ImageView child_image;
        TextView child_title;
        TextView child_price;
        TextView child_text_jian;
        TextView child_text_num;
        TextView child_text_add;
        TextView child_text_delete;
    }
}
           

在Activity中使用

public class FragmentShoppingCart extends Fragment implements InterFragmentHome,FragmentCartInter, View.OnClickListener {

    private LinearLayout linear_login;
    private Button cart_login;
    private RecyclerView tui_jian_recycler;
    private MyExpanableView my_expanable_view;
    private FragmentHomeP fragmentHomeP;
    private RelativeLayout relative_progress;
    private FragmentCartPresenter fragmentCartPresenter;
    private CheckBox cart_check_all;
    private TextView text_total;
    private TextView text_buy;
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            if (msg.what == ) {
                CountPriceBean countPriceBean = (CountPriceBean) msg.obj;

                //設定顯示
                text_total.setText("合計:¥"+countPriceBean.getPriceString());
                text_buy.setText("去結算("+countPriceBean.getCount()+")");
            }
        }
    };
    private MyExpanableAdapter myExpanableAdapter;
    private ImageView empty_cart_image;
    private CartBean cartBean;
    //建立一個集合,,,裝的是去結算的時候 選中的所有商品的資料
    private ArrayList<CartBean.DataBean.ListBean> list_selected = new ArrayList<>();

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.frament_cart_layout,container,false);

        linear_login = view.findViewById(R.id.linear_login);
        cart_login = view.findViewById(R.id.cart_login);
        tui_jian_recycler = view.findViewById(R.id.tui_jian_recycler);
        my_expanable_view = view.findViewById(R.id.my_expanable_view);
        relative_progress = view.findViewById(R.id.relative_progress);
        cart_check_all = view.findViewById(R.id.cart_check_all);
        text_total = view.findViewById(R.id.text_total);
        text_buy = view.findViewById(R.id.text_buy);
        empty_cart_image = view.findViewById(R.id.empty_cart_image);

        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        initChenJin();

        //去掉預設的訓示器
        my_expanable_view.setGroupIndicator(null);

        //失去焦點....界面不是從recyclerView開始顯示
        tui_jian_recycler.setFocusable(false);

        //2.為你推薦,,,隻需要擷取一次
        fragmentHomeP = new FragmentHomeP(this);
        //調用p層裡面的方法....https://www.zhaoapi.cn/ad/getAd
        fragmentHomeP.getNetData(ApiUtil.HOME_URL);

        fragmentCartPresenter = new FragmentCartPresenter(this);


        //全選 設定點選事件
        cart_check_all.setOnClickListener(this);
        text_buy.setOnClickListener(this);
    }

    @Override
    public void onResume() {
        Log.e("----","擷取到焦點");
        super.onResume();

        initData();

        //為你推薦的資料請求一次....其實為你推薦的資料也是随着登入和不登入改變


    }



    private void initData() {

        //判斷是否登入...沒有,則顯示登入按鈕....已經登入顯示購物車資料
        if (CommonUtils.getBoolean("isLogin")) {
            //請求購物車的資料...顯示購物車
            my_expanable_view.setVisibility(View.VISIBLE);
            empty_cart_image.setVisibility(View.VISIBLE);
            linear_login.setVisibility(View.GONE);

            //請求購物車的資料
            getCartData();


        }else {
            //登入按鈕的顯示
            linear_login.setVisibility(View.VISIBLE);
            my_expanable_view.setVisibility(View.GONE);
            empty_cart_image.setVisibility(View.GONE);
            //登入的點選事件
            cart_login.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(getActivity(),LoginActivity.class);
                    startActivity(intent);
                }
            });

        }

    }

    /**
     * 擷取購物車資料
     */
    private void getCartData() {
        //顯示進度條
        relative_progress.setVisibility(View.VISIBLE);

        //查詢購物車的資料
        fragmentCartPresenter.getCartData(ApiUtil.SELECT_CART,CommonUtils.getString("uid"));

    }

    @Override
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged(hidden);

        if (hidden) {
            //Log.e("----","隐藏");


        }else {
            Log.e("----","顯示");
            initChenJin();
            initData();

        }

    }

    private void initChenJin() {
        ChenJinUtil.setStatusBarColor(getActivity(), getResources().getColor(R.color.colorPrimaryDark));
    }

    @Override
    public void onSuccess(final HomeBean homeBean) {
        //瀑布流
        tui_jian_recycler.setLayoutManager(new StaggeredGridLayoutManager(, OrientationHelper.VERTICAL));
        //為你推薦設定擴充卡
        TuiJianAdapter tuiJianAdapter = new TuiJianAdapter(getActivity(), homeBean.getTuijian());
        tui_jian_recycler.setAdapter(tuiJianAdapter);

        //為你推薦的點選事件
        tuiJianAdapter.setOnItemListner(new OnItemListner() {
            @Override
            public void onItemClick(int position) {

                //跳轉的是自己的詳情頁面
                Intent intent = new Intent(getActivity(), DetailActivity.class);
                //傳遞pid
                intent.putExtra("pid",homeBean.getTuijian().getList().get(position).getPid());
                startActivity(intent);

            }

            @Override
            public void onItemLongClick(int position) {

            }
        });
    }

    @Override
    public void onFenLeiDataSuccess(FenLeiBean fenLeiBean) {

    }

    @Override
    public void getCartDataNull() {
        relative_progress.setVisibility(View.GONE);
        empty_cart_image.setVisibility(View.VISIBLE);
        my_expanable_view.setVisibility(View.GONE);
        Toast.makeText(getActivity(),"購物車為空,先去逛逛吧",Toast.LENGTH_SHORT).show();
    }

    @Override
    public void getCartDataSuccess(final CartBean cartBean) {
        this.cartBean = cartBean;

        //進度條隐藏
        relative_progress.setVisibility(View.GONE);
        empty_cart_image.setVisibility(View.GONE);
        my_expanable_view.setVisibility(View.VISIBLE);

        //顯示購物車的資料....二級清單設定擴充卡

        //1.根據某一組裡面所有子孩子是否選中,決定目前組是否選中
        for (int i =;i<cartBean.getData().size();i++) {

            //周遊每一組的資料,,,設定是否選中...有所有的子孩子決定
            CartBean.DataBean dataBean = cartBean.getData().get(i);
            dataBean.setGroupChecked(isAllChildInGroupChecked(dataBean.getList()));
        }

        //2.根據所有的組是否選中,,,決定全選是否選中
        cart_check_all.setChecked(isAllGroupChecked(cartBean));

        //3.
        myExpanableAdapter = new MyExpanableAdapter(getActivity(), cartBean,handler,relative_progress,fragmentCartPresenter);
        my_expanable_view.setAdapter(myExpanableAdapter);

        //展開所有的每一組
        for (int i = ;i<cartBean.getData().size();i++) {
            my_expanable_view.expandGroup(i);
        }

        //4.計算商品的總價和數量
        myExpanableAdapter.sendPriceAndCount();


        //子條目的點選事件
        my_expanable_view.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
            @Override
            public boolean onChildClick(ExpandableListView expandableListView, View view, int groupPosition, int childPosition, long l) {

                //Toast.makeText(getActivity(),"點選了",Toast.LENGTH_SHORT).show();

                //跳轉的是自己的詳情頁面
                Intent intent = new Intent(getActivity(), DetailActivity.class);
                //傳遞pid
                intent.putExtra("pid",cartBean.getData().get(groupPosition).getList().get(childPosition).getPid());
                startActivity(intent);

                return false;
            }
        });
    }

    /**
     * 是否所有的組選中
     * @param cartBean
     * @return
     */
    private boolean isAllGroupChecked(CartBean cartBean) {

        for (int i=;i<cartBean.getData().size();i++) {
            //組沒有選中
            if (! cartBean.getData().get(i).isGroupChecked()) {
                return false;
            }
        }

        return true;
    }

    /**
     * 判斷組中所有的子孩子是否全部選中
     * @param list
     * @return
     */
    private boolean isAllChildInGroupChecked(List<CartBean.DataBean.ListBean> list) {

        for (int i =;i<list.size();i++) {
            if (list.get(i).getSelected() == ) {
                return false;
            }
        }

        return true;
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.cart_check_all://全選
                //點選全選的時候,,,,根據全選的狀态 改變購物車所有商品的選中狀态

                myExpanableAdapter.setAllChildChecked(cart_check_all.isChecked());
                break;
            case R.id.text_buy://去結算
                //當顯示的是去結算(0)....打擊沒有任何反應
                if ("去結算(0)".equals(text_buy.getText().toString())) {
                    return;
                }

                //選中了商品之後,,,跳轉到确認訂單頁面
                Intent intent = new Intent(getActivity(), MakeSureOrderActivity.class);
                //跳轉傳值...選中的商品的資料...傳遞一個集合過去...選中的商品的集合

                //先清空一下集合
                list_selected.clear();

                for (int i = ;i<cartBean.getData().size();i++) {

                    List<CartBean.DataBean.ListBean> list = cartBean.getData().get(i).getList();
                    for (int j = ;j<list.size();j++) {

                        //判斷是否選中,,,如果選中存放到集合中去
                        if (list.get(j).getSelected() == ) {
                            list_selected.add(list.get(j));
                        }
                    }
                }
                //通過intent把集合傳到下一個頁面
                intent.putExtra("list_selected",list_selected);

                startActivity(intent);
                break;
        }
    }
}