仿京东购物车,二级列表

//请求数据就不多说了

package com.whk.moni.view;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ExpandableListView;
import android.widget.TextView;

import com.whk.moni.R;
import com.whk.moni.adapter.ExListAdapter;
import com.whk.moni.adapter.TuiJianAdapter;
import com.whk.moni.adapter.TuiJianAdapter.TuiJianClick;
import com.whk.moni.bean.MainBean;
import com.whk.moni.bean.QueryCarBean;
import com.whk.moni.inter.MainView;
import com.whk.moni.inter.QueryView;
import com.whk.moni.presenter.MyMainPresenter;
import com.whk.moni.presenter.MyQueryPresenter;

import org.greenrobot.eventbus.EventBus;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.Unbinder;

public class CarFragment extends Fragment implements QueryView, MainView, TuiJianClick, ExListAdapter.onItemLint {
    @BindView(R.id.nianji)
    TextView nianji;
    @BindView(R.id.exListView)
    ExpandableListView exListView;
    @BindView(R.id.car_hj)
    TextView carHj;
    Unbinder unbinder;
    @BindView(R.id.car_tuijian)
    RecyclerView carTuijian;
    @BindView(R.id.car_js)
    Button carJs;
    @BindView(R.id.car_ck)
    CheckBox carCk;
    private MyQueryPresenter myQueryPresenter;
    private List<QueryCarBean.DataBean> list;
    private ExListAdapter adapter;
    private MyMainPresenter myMainPresenter;
    private List<MainBean.TuijianBean.ListBean> list1;
    private int uid;
    private int pid;
    private List<QueryCarBean.DataBean> bigList = new ArrayList();

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.car_fragment, container, false);

        unbinder = ButterKnife.bind(this, view);
        myMainPresenter = new MyMainPresenter();
        myMainPresenter.createView(this);
        myMainPresenter.getMainView();
        myQueryPresenter = new MyQueryPresenter(this);
        SharedPreferences user = getActivity().getSharedPreferences("user", Context.MODE_PRIVATE);
        uid = user.getInt("uid", 0);
        if (uid == 0) {
            getActivity().startActivity(new Intent(getActivity(), MainActivity.class));
        } else {
            myQueryPresenter.getQueryView(uid + "", "android");
            exListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
                @Override
                public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
                    Intent intent = new Intent(getActivity(), XiangQingView.class);
                    pid = list.get(groupPosition).getList().get(childPosition).getPid();
                    //Log.d("--", "onChildClick: "+pid);
                    intent.putExtra("pid", pid);
                    startActivity(intent);
                    return false;
                }
            });
        }

        carCk.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if(carCk.isChecked()){

                    for (int i = 0; i < list.size(); i++) {
                        QueryCarBean.DataBean dataBean = list.get(i);

                        dataBean.setCk(true);
                        List<QueryCarBean.ItemBean> beanList = dataBean.getList();
                        for (int j = 0; j < beanList.size(); j++) {
                            beanList.get(j).setCheaed(true);
                        }

                    }

                }else{
                    for (int i = 0; i < list.size(); i++) {
                        QueryCarBean.DataBean dataBean = list.get(i);
                        dataBean.setCk(false);
                        List<QueryCarBean.ItemBean> beanList = dataBean.getList();
                        for (int j = 0; j < beanList.size(); j++) {
                            beanList.get(j).setCheaed(false);
                        }
                    }
                }

                setPrices();

            }
        });
        return view;
    }


    @Override
    public void qSuccess(QueryCarBean queryCarBean) {
        list = queryCarBean.getData();
        bigList.clear();
        bigList.addAll(list);
        Log.d("--", "qSuccess: " + list.size());
        getExListAdapter();
        for (int i = 0; i < list.size(); i++) {
            exListView.expandGroup(i);
        }

    }


    @Override
    public void onDestroyView() {
        super.onDestroyView();
        EventBus.getDefault().unregister(this);
        myMainPresenter.deseView();
        unbinder.unbind();
    }

    @OnClick({R.id.car_fh, R.id.car_ck, R.id.car_js})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.car_fh:
                break;
            case R.id.car_ck:
                break;
            case R.id.car_js:
                break;
        }
    }


    @Override
    public void success(MainBean mainBean) {
        list1 = mainBean.getTuijian().getList();
        StaggeredGridLayoutManager staggeredGridLayoutManager1 = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
        carTuijian.setLayoutManager(staggeredGridLayoutManager1);

        TuiJianAdapter tAdapter = new TuiJianAdapter(getActivity(), list1);
        carTuijian.setAdapter(tAdapter);
        tAdapter.getTuiJianClick(this);
    }

    @Override
    public void error(Throwable t) {

    }

    @Override
    public void tjClick(int i) {
        Intent intent = new Intent(getActivity(), XiangQingView.class);
        int pid = list1.get(i).getPid();
        intent.putExtra("pid", pid);
        startActivity(intent);
    }

    @Override
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged(hidden);
        myQueryPresenter.getQueryView(uid + "", "android");

    }

    @Override
    public void childChecked(int i, int i1, boolean checked) {

        List<QueryCarBean.ItemBean> itemBeans = list.get(i).getList();

        itemBeans.get(i1).setCheaed(checked);

        boolean b = setGroupOrCheld(i);

        if (b) {
            list.get(i).setCk(true);
        } else {
            list.get(i).setCk(false);
        }

        setPrices();



    }

    @Override
    public void groupChecked(int i, boolean checked) {

        QueryCarBean.DataBean dataBean = list.get(i);

        dataBean.setCk(checked);

        List<QueryCarBean.ItemBean> beanList = dataBean.getList();

        for (int j = 0; j < beanList.size(); j++) {
            if (list.get(i).isCk()) {
                beanList.get(j).setCheaed(true);
            } else {
                beanList.get(j).setCheaed(false);
            }

        }

        setPrices();

    }

    @Override
    public void addNums(int i, int i1) {

        List<QueryCarBean.ItemBean> dataBean = list.get(i).getList();

        int num1 = dataBean.get(i1).getNum();

        num1++;

        dataBean.get(i1).setNum(num1);

        setPrices();
    }

    @Override
    public void deleteNums(int i, int i1) {
        List<QueryCarBean.ItemBean> dataBean = list.get(i).getList();

        int num1 = dataBean.get(i1).getNum();

        num1--;

        dataBean.get(i1).setNum(num1);

        setPrices();
    }

    //计算加钱方法
    public void setPrices() {
        int price = 0;
        int num = 0;
        for (int i = 0; i < list.size(); i++) {
            List<QueryCarBean.ItemBean> beanList = list.get(i).getList();

            for (int j = 0; j < beanList.size(); j++) {
                if (beanList.get(j).isCheaed()) {
                    price += beanList.get(j).getNum() * beanList.get(j).getPrice();
                    num += beanList.get(j).getNum();
                }
            }
        }

        carHj.setText("总价:" + price);
        carJs.setText("结算(" + num + ")");

        getExListAdapter();

    }

    public boolean setGroupOrCheld(int i) {

        List<QueryCarBean.ItemBean> beanList = list.get(i).getList();

        for (int j = 0; j < beanList.size(); j++) {

            if (!beanList.get(j).isCheaed()) {
                return false;
            }
        }

        return true;
    }

    private void getExListAdapter() {
        if (adapter == null) {
            adapter = new ExListAdapter(getActivity(), bigList);
            exListView.setAdapter(adapter);
            adapter.setItemLint(this);
        } else {
            adapter.notifyDataSetChanged();
        }
    }
}
 
//适配器
package com.whk.moni.adapter;

import android.content.Context;
import android.support.v4.app.FragmentActivity;
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.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.whk.moni.R;
import com.whk.moni.bean.QueryCarBean;
import com.whk.moni.view.AddDeleteView;

import org.w3c.dom.Text;

import java.util.List;

public class ExListAdapter extends BaseExpandableListAdapter {
    Context context;
    List<QueryCarBean.DataBean> list;
    public ExListAdapter(Context context, List<QueryCarBean.DataBean> list) {
        this.list=list;
        this.context=context;
    }

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

    @Override
    public int getChildrenCount(int groupPosition) {
        return list.get(groupPosition).getList().size();
    }

    @Override
    public Object getGroup(int groupPosition) {
        return list.get(groupPosition);
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return list.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 false;
    }

    @Override
    public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        final groupViewHolder gvholder;
        if (convertView==null){
            convertView=View.inflate(context, R.layout.group_layout,null);
            gvholder=new groupViewHolder();
            gvholder.gr_ck=convertView.findViewById(R.id.gr_ck);
            gvholder.gr_name=convertView.findViewById(R.id.gr_name);
            convertView.setTag(gvholder);
        }else {
            gvholder= (groupViewHolder) convertView.getTag();
        }
        QueryCarBean.DataBean dataBean = list.get(groupPosition);
        gvholder.gr_name.setText(dataBean.getSellerName());
        gvholder.gr_ck.setChecked(dataBean.isCk());
        gvholder.gr_ck.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                lint.groupChecked(groupPosition,gvholder.gr_ck.isChecked());
            }
        });
        return convertView;
    }

    @Override
    public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        final ChildViewHolder cHilder;
        if (convertView==null){
            convertView=View.inflate(context,R.layout.item_shopcart_product,null);
            cHilder=new ChildViewHolder();
            cHilder.cbChild = convertView.findViewById(R.id.check_box);
            cHilder.tv_intro =  convertView.findViewById(R.id.tv_intro);
            cHilder.imgIcon =  convertView.findViewById(R.id.iv_adapter_list_pic);
            cHilder.tv_price =  convertView.findViewById(R.id.tv_price);
            cHilder.tv_del = convertView.findViewById(R.id.tv_goods_delete);
            cHilder.tv_num =  convertView.findViewById(R.id.tv_buy_num);
            cHilder.ll_edtor = convertView.findViewById(R.id.ll_edtor);
            cHilder.rl_no_edtor =  convertView.findViewById(R.id.rl_no_edtor);
            cHilder.addNum = convertView.findViewById(R.id.add_Num);
            cHilder.deleteNum = convertView.findViewById(R.id.delete_Num);
            cHilder.showNum = convertView.findViewById(R.id.show_Num);
            convertView.setTag(cHilder);
        }else {
            cHilder= (ChildViewHolder) convertView.getTag();
        }
        QueryCarBean.ItemBean itemBean = list.get(groupPosition).getList().get(childPosition);
        cHilder.cbChild.setChecked(itemBean.isCheaed());
        cHilder.tv_intro.setText(itemBean.getTitle());
        cHilder.tv_price.setText(""+itemBean.getPrice() );

        if(itemBean.getNum() == 1){
            cHilder.deleteNum.setEnabled(false);
        } else{
            cHilder.deleteNum.setEnabled(true);
        }

        cHilder.tv_num.setText("X "+itemBean.getNum());
        cHilder.showNum.setText(itemBean.getNum()+"");
        String[] split = itemBean.getImages().split("[|]");
        Glide.with(context).load(split[0]).into(cHilder.imgIcon);

        cHilder.cbChild.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                lint.childChecked(groupPosition,childPosition,cHilder.cbChild.isChecked());
            }
        });

        cHilder.addNum.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                lint.addNums(groupPosition,childPosition);
            }
        });

        cHilder.deleteNum.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                lint.deleteNums(groupPosition,childPosition);
            }
        });


        return convertView;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }

    class groupViewHolder{
        CheckBox gr_ck;
        TextView gr_name;
    }
    class ChildViewHolder{
        CheckBox cbChild;
        TextView tv_intro;
        ImageView imgIcon;
        TextView tv_price;
        TextView tv_del,showNum;
        LinearLayout ll_edtor;
        RelativeLayout rl_no_edtor;
        TextView tv_num;
        Button addNum,deleteNum;
    }

    private onItemLint lint;

    public void setItemLint(onItemLint lint){
        this.lint = lint;
    }

    public interface onItemLint{

        //子项复选框状态
        void childChecked(int i,int i1,boolean checked);

        //父项复选框状态
        void groupChecked(int i,boolean checked);

        //加数量
        void addNums(int i, int i1);

        //加数量
        void deleteNums(int i,  int i1);
    }


}
//group布局
 
<?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:orientation="horizontal">
    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/gr_ck"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/gr_name"/>
</LinearLayout>
//child布局
 
<?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:orientation="vertical">
    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#CCCCCC" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <CheckBox
            android:focusable="false"
            android:id="@+id/check_box"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="4dp"
            android:checkMark="?android:attr/listChoiceIndicatorMultiple"
            android:gravity="center"
            android:minHeight="64dp"
            android:minWidth="32dp"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:visibility="visible" />

        <ImageView
            android:id="@+id/iv_adapter_list_pic"
            android:layout_width="85dp"
            android:layout_height="85dp"
            android:layout_marginBottom="15dp"
            android:layout_marginTop="13dp"
            android:scaleType="centerCrop"
            />

        <RelativeLayout
            android:id="@+id/rl_no_edtor"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="13dp"
            >

            <TextView
                android:id="@+id/tv_intro"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginRight="10dp"
                android:layout_marginTop="20dp"
                android:ellipsize="end"
                android:maxLines="2"
                android:text="aa"
                android:textColor="#000"
                android:singleLine="true"
                />
            <TextView
                android:id="@+id/tv_color_size"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="bb"
                android:layout_marginTop="5dp"
                android:textColor="#000"
                android:layout_centerVertical="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true" />
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_alignParentBottom="true"
                android:layout_alignParentLeft="true"
                android:layout_marginBottom="20dp"
                android:layout_alignParentStart="true">

                <TextView
                    android:id="@+id/tv_price"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:singleLine="true"
                    android:text="cc"
                    android:textColor="#000"
                    android:textStyle="bold" />

                <LinearLayout
                    android:id="@+id/tv_discount_price"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:layout_marginLeft="10dp"
                    android:layout_toRightOf="@+id/tv_price"
                    android:orientation="horizontal"
                    >
                    <Button
                        android:layout_width="35dp"
                        android:layout_height="35dp"
                        android:id="@+id/delete_Num"
                        android:text="-"/>
                    <TextView
                        android:layout_width="20dp"
                        android:layout_height="35dp"
                        android:id="@+id/show_Num"
                        android:text="1"/>
                    <Button
                        android:layout_width="35dp"
                        android:layout_height="35dp"
                        android:id="@+id/add_Num"
                        android:text="+"
                        />
                </LinearLayout>
                <TextView
                    android:id="@+id/tv_buy_num"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:layout_marginRight="20dp"
                    android:layout_alignParentRight="true"
                    android:text="X 1"
                    android:textColor="#000"
                    />
            </RelativeLayout>
        </RelativeLayout>
        <LinearLayout
            android:id="@+id/ll_edtor"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="13dp"
            android:visibility="gone"
            android:orientation="horizontal">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical">
                <RelativeLayout
                    android:id="@+id/ll_change_num"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:layout_marginTop="20dp"
                    android:orientation="horizontal">
                    <com.whk.moni.view.AddDeleteView
                        android:id="@+id/adv_main"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content">
                        app:left_text="-"
                        app:middle_text="3"
                        app:right_text="+"
                    </com.whk.moni.view.AddDeleteView>

                </RelativeLayout>

                <TextView
                    android:id="@+id/tv_colorsize"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:gravity="center"
                    android:text="aa"
                    android:layout_gravity="left"
                    android:textColor="#000"/>
            </LinearLayout>

            <TextView
                android:id="@+id/tv_goods_delete"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="3"
                android:text="删除"
                android:background="#ecb74c"
                android:gravity="center"
                android:layout_gravity="center"
                android:textColor="#fff"/>
        </LinearLayout>
    </LinearLayout>

</LinearLayout>
//主布局
 
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    android:layout_width="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent">
<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">
        <ImageView
            android:src="@drawable/fh"
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/car_fh"
            />
        <View
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>
        <TextView
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="购物车"
            android:textSize="22dp"/>
        <View
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>
        <TextView
            android:padding="10dp"
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/nianji"
            android:text="编辑"/>
    </LinearLayout>
    <com.whk.moni.view.CustomExpandableListView
        android:id="@+id/exListView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:childIndicator="@null"
        android:groupIndicator="@null" >
    </com.whk.moni.view.CustomExpandableListView>

    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:background="#fff"
        android:id="@+id/car_tuijian"></android.support.v7.widget.RecyclerView>
    </LinearLayout>
</ScrollView>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
        <LinearLayout
            android:background="#fff"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_alignParentBottom="true"
            android:orientation="horizontal">
            <CheckBox
                android:layout_gravity="center"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/car_ck"
                android:text="全选"/>
            <View
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"/>
            <TextView
                android:layout_gravity="center"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/car_hj"
                android:text="合计"/>
            <View
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"/>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/car_js"
                android:text="结算"
                android:background="#f00"/>
        </LinearLayout>

</RelativeLayout>
</RelativeLayout>
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值