购物车

适配器

package com.bwie.text.apater;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckBox;
import android.widget.TextView;

import com.bwie.text.MainActivity;
import com.bwie.text.R;
import com.bwie.text.bean.Card_01;
import com.bwie.text.bean.Card_02;

import java.util.List;

/**
 * 1. 类的用途
 * 2. @author
 * 3. @date 2017/10/21 08:44
 */

public class CardApater extends BaseExpandableListAdapter {

    Context context;
    List<Card_01> card_01s;
    List<List<Card_02>> card_02s;

    int num ;

    public void setnum(int num) {
        this.num = num;
    }

    public CardApater(Context context, List<Card_01> card_01s, List<List<Card_02>> card_02s) {
        this.context = context;
        this.card_01s = card_01s;
        this.card_02s = card_02s;
    }

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

    @Override
    public int getChildrenCount(int i) {
        return card_02s.get(i).size();
    }

    @Override
    public Object getGroup(int i) {
        return card_01s.get(i);
    }

    @Override
    public Object getChild(int i, int i1) {
        return card_02s.get(i).get(i1);
    }

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

    @Override
    public long getChildId(int i, int i1) {
        return i1;
    }

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

    @Override
    public View getGroupView(final int i, boolean b, View view, ViewGroup viewGroup) {
        final CardViewHolder01 holder01;
        if (view == null) {
            holder01 = new CardViewHolder01();
            view = View.inflate(context, R.layout.card_01_item, null);
            holder01.name = view.findViewById(R.id.card_01_name);
            holder01.check = view.findViewById(R.id.card_01_check);
            view.setTag(holder01);
        } else {
            holder01 = (CardViewHolder01) view.getTag();
        }
        final Card_01 card_01 = card_01s.get(i);
        holder01.name.setText(card_01.getName());
        holder01.check.setChecked(card_01.isCheck());

        holder01.check.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                boolean checked = holder01.check.isChecked();
                //修改
                card_01.setCheck(checked);
                //通过一级管理二级
                cardCheck1(checked, i);
                iCard_01Listener.iCard_01Listener(i);
            }
        });

        return view;
    }

    @Override
    public View getChildView(final int i, int i1, boolean b, View view, ViewGroup viewGroup) {
        final CardViewHolder02 holder02;
        if (view == null) {
            holder02 = new CardViewHolder02();
            view = View.inflate(context, R.layout.card_02_item, null);
            holder02.name = view.findViewById(R.id.card_02_name);
            holder02.check = view.findViewById(R.id.card_02_check);
            view.setTag(holder02);
        } else {
            holder02 = (CardViewHolder02) view.getTag();
        }
        final Card_02 card_02 = card_02s.get(i).get(i1);
        holder02.name.setText(card_02.getName());
        holder02.check.setChecked(card_02.isCheck());
        holder02.check.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                boolean checked = holder02.check.isChecked();
                //修改
                card_02.setCheck(checked);
                //通过二级修改一级
                cardCheck2(i);
                iCard_02Listener.iCard_02Listener(i);
                if (checked) {
                    num = num + 1;
                } else {
                    num = num - 1;
                }
                iNum.num(num);
            }
        });
        return view;
    }

    @Override
    public boolean isChildSelectable(int i, int i1) {
        return false;
    }

    class CardViewHolder01 {
        TextView name;
        CheckBox check;
    }

    class CardViewHolder02 {
        TextView name;
        CheckBox check;
    }

    public void cardCheck1(boolean b, int position) {
        //if(b){
        //选中所有子条目
        child(position, b);
        // }
    }

    public void child(int position, boolean b) {
        int indexnum = 0;
        for (int j = 0; j < card_02s.get(position).size(); j++) {
            card_02s.get(position).get(j).setCheck(b);
        }
        int size = card_02s.get(position).size();
        if (b){
            indexnum = indexnum+size;
            num = num+indexnum;
        }else{
            indexnum = indexnum+size;
            num = num-indexnum;
        }
        iNum.num(num);
        notifyDataSetChanged();
    }

    public void cardCheck2(int position) {

        int index = 0;
        //int size = card_02s.get(position).size();
        for (int i = 0; i < card_02s.get(position).size(); i++) {
            if (card_02s.get(position).get(i).isCheck()) {
                index++;
            }
        }
        if (index == card_02s.get(position).size()) {
            card_01s.get(position).setCheck(true);
        } else {
            card_01s.get(position).setCheck(false);
        }
        notifyDataSetChanged();
    }

    private ICard_01Listener iCard_01Listener;

    public void setiCard_01Listener(ICard_01Listener iCard_01Listener) {
        this.iCard_01Listener = iCard_01Listener;
    }

    public interface ICard_01Listener {
        void iCard_01Listener(int position);
    }

    public ICard_02Listener iCard_02Listener;

    public interface ICard_02Listener {
        void iCard_02Listener(int position);
    }

    public void setiCard_02Listener(ICard_02Listener iCard_02Listener) {
        this.iCard_02Listener = iCard_02Listener;
    }

    private INum iNum;

    public interface INum {
        void num(int num);
    }

    public void setiNum(INum iNum) {
        this.iNum = iNum;
    }
}

bean

package com.bwie.text.bean;

/**
 * 1. 类的用途
 * 2. @author
 * 3. @date 2017/10/21 08:35
 */

public class Card_01 {

    private String name;
    private boolean check;

    public Card_01(String name, boolean check) {
        this.name = name;
        this.check = check;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isCheck() {
        return check;
    }

    public void setCheck(boolean check) {
        this.check = check;
    }

    @Override
    public String toString() {
        return "Card_01{" +
                "name='" + name + '\'' +
                ", check=" + check +
                '}';
    }
}

bean2

package com.bwie.text.bean;

/**
 * 1. 类的用途
 * 2. @author
 * 3. @date 2017/10/21 08:37
 */

public class Card_02 {
    private String name;
    private boolean check;

    public Card_02(String name, boolean check) {
        this.name = name;
        this.check = check;
    }

    @Override
    public String toString() {
        return "Card_02{" +
                "name='" + name + '\'' +
                ", check=" + check +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isCheck() {
        return check;
    }

    public void setCheck(boolean check) {
        this.check = check;
    }
}

Mainactivity

package com.bwie.text;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ExpandableListView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.bwie.text.apater.CardApater;
import com.bwie.text.bean.Card_01;
import com.bwie.text.bean.Card_02;

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

import butterknife.Bind;
import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Bind(R.id.all)
    CheckBox all;
    @Bind(R.id.num)
    TextView num_tv;
    @Bind(R.id.relativeLayout)
    RelativeLayout relativeLayout;
    @Bind(R.id.expandableListView)
    ExpandableListView expandableListView;
    private List<Card_01> card_01s = new ArrayList<>();
    private List<List<Card_02>> card_02s = new ArrayList<>();
    private CardApater cardApater;
    int num = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        data();

        cardApater = new CardApater(this, card_01s, card_02s);
        expandableListView.setAdapter(cardApater);
        for (int i = 0;i<card_01s.size();i++){
            expandableListView.expandGroup(i);
        }
        expandableListView.setGroupIndicator(null);

        all.setOnClickListener(this);

        cardApater.setiCard_01Listener(new CardApater.ICard_01Listener() {
            @Override
            public void iCard_01Listener(int position) {
                selectAll(position);
            }
        });

        cardApater.setiCard_02Listener(new CardApater.ICard_02Listener() {
            @Override
            public void iCard_02Listener(int position) {
                selectAll(position);
            }
        });
        cardApater.setiNum(new CardApater.INum() {
            @Override
            public void num(int num) {
                num_tv.setText("数量:"+num);
            }
        });


    }

    private void selectAll(int position) {
        int index = 0;
        for (int i=0;i<card_01s.size();i++){
            boolean check = card_01s.get(i).isCheck();
            if (check){
                index++;
            }
        }
        if (index==card_01s.size()){
            all.setChecked(true);
        }else{
            all.setChecked(false);
        }
    }

    private void data() {
        for (int i = 0; i < 3; i++) {
            card_01s.add(new Card_01("商家" + i, false));
        }

        for (int i = 0; i < card_01s.size(); i++) {
            List<Card_02> card = new ArrayList<>();
            for (int j = 0; j < 2; j++) {
                card.add(new Card_02("商品" + j, false));
            }
            card_02s.add(card);
        }
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.all:
                boolean checked = all.isChecked();
                all(checked);
                break;
        }
    }
    private void all(boolean checked) {
        int indexnum = 0;
        num = 0;
         for (int i=0;i<card_01s.size();i++){
             card_01s.get(i).setCheck(checked);
             int size = card_02s.get(i).size();
             indexnum = indexnum + size;
             for (int j=0;j<card_02s.get(i).size();j++){
                 card_02s.get(i).get(j).setCheck(checked);

             }
         }
         num = num+indexnum;
         if (checked){
          num_tv.setText("数量:"+num);
         }
         else{
             num=0;
             num_tv.setText("数量:"+num);
         }
        cardApater.setnum(num);
        cardApater.notifyDataSetChanged();
    }
}

mainactivity_xml
<?xml version="1.0" encoding="utf-8"?>
<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="com.bwie.text.MainActivity">

    <ExpandableListView
        android:id="@+id/expandableListView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/relativeLayout" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:id="@+id/relativeLayout">
        <CheckBox
            android:id="@+id/all"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="全选"
            />
        <TextView
            android:id="@+id/num"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="合计:0"
            android:gravity="center"
            android:layout_alignParentRight="true"
            />
    </RelativeLayout>

</RelativeLayout>
//一级对应的xml
<?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="40dp">


    <CheckBox
        android:id="@+id/card_01_check"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />

    <TextView
        android:id="@+id/card_01_name"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center_vertical"
        android:text="商家"
        />

</LinearLayout>
//二级对应的xml
<?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="60dp"
    >

    <CheckBox
        android:id="@+id/card_02_check"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginLeft="15dp"
        />

    <TextView
        android:id="@+id/card_02_name"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center_vertical"
        android:text="商品"
        />


</LinearLayout>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值