适配器
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>
购物车
最新推荐文章于 2023-05-26 14:36:40 发布