购物车

public class MainActivity extends AppCompatActivity implements IMainView {

    private ExpandableListView expan;
    private CheckBox check_all;
    private TextView all_price;

    private MyAdapter myAdapter;
    private MainPresenter mainPresenter;
    private List<DataBean> data;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initData();
    }

    private void initView() {
        expan = findViewById(R.id.expan);
        check_all = findViewById(R.id.check_All);
        all_price = findViewById(R.id.All_price);

    }

    private void initData() {
        mainPresenter = new MainPresenter(this);
        mainPresenter.ShowData();;
        mainPresenter.setView(this);

         check_all.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
           if (check_all.isChecked()){
               setCheckAll(true);
           }else {
               setCheckAll(false);
           }
           myAdapter.notifyDataSetChanged();
             }
         });
         /**    //全选
        select_all.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MoneyAndCount(select_all.isChecked());
                shoppingCartAdapter.notifyDataSetChanged();
            }
        });*/
    }

    @Override
    public void onSuccess(Object o) {
        JsonBean jsonBean =(JsonBean)o;
        data = jsonBean.getData();
        myAdapter = new MyAdapter(MainActivity.this, data);
         expan.setAdapter(myAdapter);
        for (int i = 0; i < jsonBean.getData().size(); i++) {
             expan.expandGroup(i);
        }
    }

    @Override
    public void onFail(String err) {

    }

    public  void setCheckAll(boolean ischeck){
        for (int i = 0; i < data.size() ; i++) {
            DataBean dataBean = data.get(i);
            dataBean.setCheck(ischeck);
            List<DataBean.ListBean> list = dataBean.getList();
            for (int j = 0; j < list.size(); j++) {
                list.get(j).setCheck(ischeck);
            }
        }
        myAdapter.notifyDataSetChanged();
    }
    /** //定义一个方法计算数量个价钱
    public void MoneyAndCount(boolean bool)
    {
        double totalMoney =0;
        int totalNum = 0;
        //循环遍历商家。判断商家的状态
        for(int a = 0; a< data.size(); a++)
        {
            JsonBean.DataBean dataBean = data.get(a);
            dataBean.setCheck(bool);
            List<JsonBean.DataBean.ListBean> list = dataBean.getList();
            //循环遍历商品
            for(int i =0 ; i<list .size(); i++)
            {
                list.get(i).setCheck(bool);
                totalMoney = totalMoney +(Double.valueOf(list.get(i).getBargainPrice())*Double.valueOf(list.get(i).getNum()));
                totalNum = totalNum +Integer.parseInt(list.get(i).getNum()+"");
            }
        }
        if(bool)
        {
            price_all.setText("总价钱"+totalMoney);
        }else{
            price_all.setText("总价钱 0.00");
        }
    }*/
}

class MyAdapter extends BaseExpandableListAdapter {
    Context context; List<JsonBean.DataBean> data;
    private PresentViewHolder presentViewHolder;
    private List<JsonBean.DataBean.ListBean> list;
  private  int num1=0;

    public MyAdapter(Context context, List<JsonBean.DataBean> data) {
        this.context=context;
        this.data=data;
    }

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

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

    @Override
    public Object getGroup(int groupPosition) {
        return null;
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return null;
    }

    @Override
    public long getGroupId(int groupPosition) {
        return 0;
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return 0;
    }

    @Override
    public boolean hasStableIds() {
        return false;
    }

    @Override
    public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        View view = LayoutInflater.from(context).inflate(R.layout.present, null);
        presentViewHolder = new PresentViewHolder();
        presentViewHolder. fuBox = view.findViewById(R.id.fuBox);
        presentViewHolder. fuName = view.findViewById(R.id.fuName);

        presentViewHolder.fuBox.setChecked(data.get(groupPosition).isCheck());
        presentViewHolder.fuName.setText(data.get(groupPosition).getSellerName());

        //得到父类的数据
        JsonBean.DataBean dataBean = data.get(groupPosition);
        //给父类设置点击事件
        presentViewHolder.fuBox.setChecked(dataBean.isCheck());
        presentViewHolder.fuBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                CheckBox checkBox =(CheckBox) v;

                boolean checked = checkBox.isChecked();
                data.get(groupPosition).setCheck(checked);
                selectGroup(groupPosition,checked);
                boolean selectAllGroup=isSelectAllGroup();
                checkBox.setChecked(selectAllGroup);
                notifyDataSetChanged();
            }
        });
        return view;
    }

    @Override
    public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
         final ChildViewHolder childViewHolder;
        View view = LayoutInflater.from(context).inflate(R.layout.child, null);
        childViewHolder = new ChildViewHolder();
        childViewHolder. ziBox = view.findViewById(R.id.ziBox);
        childViewHolder.Name = view.findViewById(R.id.Name);
        childViewHolder. img = view.findViewById(R.id.img);
        childViewHolder. price = view.findViewById(R.id.price);
        childViewHolder. num = view.findViewById(R.id.num);
        Button del = view.findViewById(R.id.del);
        Button add = view.findViewById(R.id.add);

        childViewHolder.ziBox.setChecked(data.get(groupPosition).getList().get(childPosition).isCheck());
        childViewHolder.Name.setText(data.get(groupPosition).getList().get(childPosition).getTitle());
        childViewHolder.price.setText(data.get(groupPosition).getList().get(childPosition).getPrice());
        childViewHolder.num.setText(data.get(groupPosition).getList().get(childPosition).getNum()+"");
        Glide.with(context)
                .load(data.get(groupPosition)
                        .getList().get(childPosition)
                        .getDetailUrl())
                .into(childViewHolder.img);
//得到子条目的数据
        list = data.get(groupPosition).getList();
        //给子条目设置点击事件
        childViewHolder.ziBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                CheckBox checkBox =(CheckBox)v;
                //得到父条目数据
                JsonBean.DataBean dataBean = data.get(groupPosition);
                JsonBean.DataBean.ListBean listBean = data.get(groupPosition).getList().get(childPosition);
                listBean.setCheck(checkBox.isChecked());
                boolean selectGroup=isSelectGroup(groupPosition);
                dataBean.setCheck(selectGroup);
                boolean selectAllGroup=isSelectAllGroup();
                checkBox.setChecked(selectAllGroup);
                notifyDataSetChanged();
            }
        });

         num1=data.get(groupPosition).getList().get(childPosition).getNum();
         add.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 num1++;
                 list.get(childPosition).setNum(num1);
                 childViewHolder.num.setText(num1+"");
             }
         });
         del.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 if (num1<=1){
                     Toast.makeText(context,"不能再少了",Toast.LENGTH_SHORT).show();
               return;
                 }else {
                     num1--;
                     list.get(childPosition).setNum(num1);
                     childViewHolder.num.setText(num1+"");
                 }
             }
         });
        return view;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return false;
    }
    class  PresentViewHolder{
        CheckBox fuBox;
        TextView fuName;
    }

    class  ChildViewHolder{
        CheckBox ziBox;
        TextView Name;
        TextView price;
        TextView num;
        ImageView img;

    }
    private void selectGroup(int groupPosition, boolean checked) {
        for (int i = 0; i <data.get(groupPosition).getList().size() ; i++) {
            JsonBean.DataBean.ListBean listBean = data.get(groupPosition).getList().get(i);
            listBean.setCheck(checked);
        }
    }
    private boolean isSelectAllGroup() {
        for (int i = 0; i <data.size() ; i++) {
            JsonBean.DataBean dataBean = data.get(i);
            boolean check =dataBean.isCheck();
            if (!check){
                return  false;
            }
        }
        return true;
    }
    private boolean isSelectGroup(int groupPosition) {
        for (int i = 0; i <data.get(groupPosition).getList().size() ; i++) {
            JsonBean.DataBean.ListBean listBean = data.get(groupPosition).getList().get(i);
            boolean check=listBean.isCheck();
            if (!check){
                return  false;
            }
        }
        return  true;
    }
}

<RelativeLayout 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"

    tools:context=".view.activity.MainActivity">

    <ExpandableListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/expan"></ExpandableListView>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_alignParentBottom="true"
        android:background="#999999"
        android:orientation="horizontal">
        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:id="@+id/check_All"/>
        <TextView
            android:id="@+id/All_price"
            android:layout_gravity="center_vertical"
            android:text="总价:¥0.00"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_height="match_parent">

    <CheckBox
        android:id="@+id/ziBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginLeft="30dp"/>


    <ImageView
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:layout_marginLeft="35dp"
        android:id="@+id/img"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@+id/Name"
            android:layout_width="match_parent"
            android:textSize="20dp"
            android:layout_height="wrap_content" />
        <TextView
            android:id="@+id/price"
            android:gravity="center"
            android:layout_width="match_parent"
            android:textSize="24dp"
            android:textColor="#ff1a00"
            android:layout_height="wrap_content" />
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/add"
                android:text="+"/>
            <TextView
                android:id="@+id/num"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/del"
                android:text="-"/>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_height="match_parent">
    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusable="false"
        android:clickable="true"
        android:id="@+id/fuBox"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/fuName"/>

</LinearLayout>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值