购物车全选

来源:互联网 发布:碣石鱼刺车行淘宝 编辑:程序博客网 时间:2024/06/08 18:55

适配器:

public class MyExpAdapter extends BaseExpandableListAdapter{    private Context context;    private List<GoodsBean> glist;    private List<List<GoodsBean>> clist;    private CheckBox check_all;    private TextView count;    private int all = 0;    public MyExpAdapter(Context context, List<GoodsBean> glist, List<List<GoodsBean>> clist, CheckBox check_all, TextView count) {        this.context = context;        this.glist = glist;        this.clist = clist;        this.check_all = check_all;        this.count = count;    }    @Override    public int getGroupCount() {        return glist.size();    }    @Override    public int getChildrenCount(int i) {        return clist.get(i).size();    }    @Override    public Object getGroup(int i) {        return glist.get(i);    }    @Override    public Object getChild(int i, int i1) {        return clist.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 true;    }    @Override    public View getGroupView(final int i, boolean b, View view, ViewGroup viewGroup) {        view = LayoutInflater.from(context).inflate(R.layout.group, viewGroup, false);        TextView tv = view.findViewById(R.id.group_tv);        final CheckBox cb = view.findViewById(R.id.group_cb);        cb.setChecked(glist.get(i).isCk());        tv.setText(glist.get(i).getName());        cb.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                String str = count.getText().toString().trim();                int num = Integer.valueOf(str);                int b =0;                int c = 0;                if (glist.get(i).isCk()){                    num-=clist.get(i).size();                    glist.get(i).setCk(false);                    check_all.setChecked(false);                    for (int j = 0; j < clist.get(i).size(); j++) {                        clist.get(i).get(j).setCk(false);                    }                }else {                    glist.get(i).setCk(true);                    for (int k = 0; k < clist.get(i).size(); k++) {                        if (!clist.get(i).get(k).isCk()){                            c++;                        }                        clist.get(i).get(k).setCk(true);                    }                }                for (int j = 0; j < glist.size(); j++) {                    if (glist.get(j).isCk()){                        b++;                    }                }                if (b==glist.size()){                    check_all.setChecked(true);                }                num+=c;                count.setText(num+"");                    notifyDataSetChanged();            }        });        return view;    }    @Override    public View getChildView(final int i, final int i1, boolean b, View view, ViewGroup viewGroup) {        view = LayoutInflater.from(context).inflate(R.layout.child, viewGroup, false);        TextView tv = view.findViewById(R.id.child_tv);        CheckBox cb = view.findViewById(R.id.child_cb);        tv.setText(clist.get(i).get(i1).getName());        cb.setChecked(clist.get(i).get(i1).isCk());        cb.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                String str = count.getText().toString().trim();                int num = Integer.valueOf(str);                if (clist.get(i).get(i1).isCk()){                    num--;                    clist.get(i).get(i1).setCk(false);                    glist.get(i).setCk(false);                    check_all.setChecked(false);                }else {                    num++;                    clist.get(i).get(i1).setCk(true);                    int a = 0;                    int b = 0;                    for (int j = 0; j < clist.get(i).size(); j++) {                        if (clist.get(i).get(j).isCk()){                            a++;                        }                    }                    if (a==clist.get(i).size()){                        glist.get(i).setCk(true);                    }                    for (int j = 0; j < glist.size(); j++) {                        if (glist.get(j).isCk()){                            b++;                        }                        if (b==glist.size()){                            check_all.setChecked(true);                        }                    }                }                count.setText(num+"");                notifyDataSetChanged();            }        });        return view;    }    @Override    public boolean isChildSelectable(int i, int i1) {        return true;    }}

------------------------------------------------------------------

public class MainActivity extends AppCompatActivity {    private ExpandableListView expandableListView;    private List<GoodsBean> glist;    private List<List<GoodsBean>> clist;    private CheckBox check_all;    private TextView count;    private MyExpAdapter myExpAdapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        check_all = (CheckBox) findViewById(R.id.check_all);        count = (TextView) findViewById(R.id.count);        expandableListView = (ExpandableListView) findViewById(R.id.expandableListView);        initData();        myExpAdapter = new MyExpAdapter(this,glist,clist,check_all,count);        expandableListView.setGroupIndicator(null);        expandableListView.setAdapter(myExpAdapter);        /*int groupCount = myExpAdapter.getGroupCount();        for (int i = 0; i < groupCount; i++) {            expandableListView.expandGroup(i);        }*/        expandableListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {            @Override            public boolean onGroupClick(ExpandableListView expandableListView, View view, int i, long l) {                Toast.makeText(MainActivity.this, "1111", Toast.LENGTH_SHORT).show();                return false;            }        });        check_all.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                boolean checked = check_all.isChecked();                int all = 0;                if (checked){                    for (int i = 0; i < clist.size(); i++) {                        glist.get(i).setCk(true);                        all+=clist.get(i).size();                        for (int j = 0; j < clist.get(i).size(); j++) {                            clist.get(i).get(j).setCk(true);                        }                    }                }else {                    for (int i = 0; i < clist.size(); i++) {                        glist.get(i).setCk(false);                        for (int j = 0; j < clist.get(i).size(); j++) {                            clist.get(i).get(j).setCk(false);                            all=0;                        }                    }                }                count.setText(""+all);                myExpAdapter.notifyDataSetChanged();            }        });    }    private void initData() {        glist = new ArrayList<>();        glist.add(new GoodsBean("商品A",false));        glist.add(new GoodsBean("商品B",false));        glist.add(new GoodsBean("商品C",false));        clist = new ArrayList<>();        List<GoodsBean> clist1 = new ArrayList<>();        clist1.add(new GoodsBean("商品1",false));        clist1.add(new GoodsBean("商品2",false));        clist1.add(new GoodsBean("商品3",false));        clist1.add(new GoodsBean("商品4",false));        clist1.add(new GoodsBean("商品5",false));        List<GoodsBean> clist2 = new ArrayList<>();        clist2.add(new GoodsBean("商品1",false));        clist2.add(new GoodsBean("商品2",false));        clist2.add(new GoodsBean("商品3",false));        clist2.add(new GoodsBean("商品4",false));        clist2.add(new GoodsBean("商品5",false));        List<GoodsBean> clist3 = new ArrayList<>();        clist3.add(new GoodsBean("商品1",false));        clist3.add(new GoodsBean("商品2",false));        clist3.add(new GoodsBean("商品3",false));        clist3.add(new GoodsBean("商品4",false));        clist3.add(new GoodsBean("商品5",false));        clist.add(clist1);        clist.add(clist2);        clist.add(clist3);    }}

原创粉丝点击