public class Parent {
private Boolean aBoolean;
private String ShopName;
public Parent(Boolean aBoolean, String shopName) {
this.aBoolean = aBoolean;
ShopName = shopName;
}
public Boolean getaBoolean() {
return aBoolean;
}
public void setaBoolean(Boolean aBoolean) {
this.aBoolean = aBoolean;
}
public String getShopName() {
return ShopName;
}
public void setShopName(String shopName) {
ShopName = shopName;
}
@Override
public String toString() {
return "Parent{" +
"aBoolean=" + aBoolean +
", ShopName='" + ShopName + '\'' +
'}';
}
}
二级bean
public class Child {
private Boolean c_child;
private String sp_name;
private String image;
private int num;
public Child(Boolean c_child, String sp_name, String image, int num) {
this.c_child = c_child;
this.sp_name = sp_name;
this.image = image;
this.num = num;
}
public Boolean getC_child() {
return c_child;
}
public void setC_child(Boolean c_child) {
this.c_child = c_child;
}
public String getSp_name() {
return sp_name;
}
public void setSp_name(String sp_name) {
this.sp_name = sp_name;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
@Override
public String toString() {
return "Child{" +
"c_child=" + c_child +
", sp_name='" + sp_name + '\'' +
", image='" + image + '\'' +
", num=" + num +
'}';
}
}
public class MainActivity extends AppCompatActivity {
@Bind(R.id.gouwuche)
TextView gouwuche;
@Bind(R.id.expend)
ExpandableListView expend;
@Bind(R.id.heji)
TextView heji;
@Bind(R.id.ll)
LinearLayout ll;
List<Parent> parent;
List<List<Child>> child;
@Bind(R.id.main_checkbox)
CheckBox mainCheckbox;
int sum=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
parent = new ArrayList<>();
parent.add(new Parent(false, "商店A"));
parent.add(new Parent(false, "商店B"));
parent.add(new Parent(false, "商店C"));
child = new ArrayList<>();
for (int i = 0; i < parent.size(); i++) {
List<Child> list = new ArrayList<>();
for (int j = 0; j < 2; j++) {
list.add(new Child(false, "商品" + j, "http://img4.imgtn.bdimg.com/it/u=1754892242,3982746072&fm=11&gp=0.jpg", 2));
}
child.add(list);
}
final Adper adper = new Adper(parent, child, MainActivity.this);
expend.setAdapter(adper);
mainCheckbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
boolean checked = mainCheckbox.isChecked();
if(checked){
for(int h=0;h<parent.size();h++){
parent.get(h).setaBoolean(true);
}
for(int g=0;g<child.size();g++){
List<Child> list = child.get(g);
for(int f=0;f<list.size();f++){
list.get(f).setC_child(true);
int num = list.get(f).getNum();
sum=sum+num;
}
}
heji.setText(sum+"");
adper.notifyDataSetChanged();
}else{
for(int h=0;h<parent.size();h++){
parent.get(h).setaBoolean(false);
}
for(int g=0;g<child.size();g++){
List<Child> list = child.get(g);
for(int f=0;f<list.size();f++){
list.get(f).setC_child(false);
}
}
adper.notifyDataSetChanged();
sum=0;
heji.setText(0+"");
}
}
});
adper.setGetnum(new Adper.Getnum() {
@Override
public void getitemnum(int sum) {
heji.setText("合计"+sum);
}
});
}
}
public class Adper extends BaseExpandableListAdapter{
private List<Parent> list;
private List<List<Child>> child;
private Context context;
private boolean checked;
private int sum;
public Adper(List<Parent> list, List<List<Child>> child, Context context) {
this.list = list;
this.child = child;
this.context = context;
}
@Override
public int getGroupCount() {
return list.size();
}
@Override
public int getChildrenCount(int i) {
return child.get(i).size();
}
@Override
public Object getGroup(int i) {
return list.get(i);
}
@Override
public Object getChild(int i, int i1) {
return child.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=View.inflate(context, R.layout.parent,null);
final CheckBox parent_checkbox = view.findViewById(R.id.parent_checkbox);
parent_checkbox.setChecked(list.get(i).getaBoolean());
TextView parent_dianpu = view.findViewById(R.id.parent_dianpu);
parent_dianpu.setText(list.get(i).getShopName());
parent_checkbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
boolean checked = parent_checkbox.isChecked();
list.get(i).setaBoolean(checked);
List<Child> list = child.get(i);
for(int m=0;m<list.size();m++){
Child child = list.get(m);
child.setC_child(checked);
}
if(checked){
for(int m=0;m<list.size();m++){
Child child = list.get(m);
int num = child.getNum();
sum=sum+num;
getnum.getitemnum(sum);
}
}else{
for(int m=0;m<list.size();m++){
Child child = list.get(m);
int num = child.getNum();
sum=sum-num;
getnum.getitemnum(sum);
}
}
notifyDataSetChanged();
}
});
return view;
}
@Override
public View getChildView(final int i, final int i1, boolean b, View view, ViewGroup viewGroup) {
view=View.inflate(context, R.layout.child,null);
final CheckBox child_cb = view.findViewById(R.id.child_cb);
child_cb.setChecked(child.get(i).get(i1).getC_child());
TextView child_name = view.findViewById(R.id.child_name);
child_name.setText(child.get(i).get(i1).getSp_name());
ImageView child_image = view.findViewById(R.id.child_image);
Picasso.with(context).load(child.get(i).get(i1).getImage()).into(child_image);
final Button child_num = view.findViewById(R.id.child_num);
child_num.setText(child.get(i).get(i1).getNum()+"");
Button jian = view.findViewById(R.id.jian);
Button jia = view.findViewById(R.id.jia);
child_cb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int c=0;
checked = child_cb.isChecked();
if(checked){
int num = child.get(i).get(i1).getNum();
sum=sum+num;
getnum.getitemnum(sum);
}else{
int num = child.get(i).get(i1).getNum();
sum=sum-num;
getnum.getitemnum(sum);
}
List<Child> list1 = child.get(i);
Child child1 = list1.get(i1);
child1.setC_child(checked);
for(int f=0;f<list1.size();f++){
Boolean c_child = list1.get(f).getC_child();
if(c_child){
c++;
}
}
if(c==list1.size()){
Adper.this.list.get(i).setaBoolean(true);
}else{
Adper.this.list.get(i).setaBoolean(false);
}
notifyDataSetChanged();
}
});
jian.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Child child = Adper.this.child.get(i).get(i1);
Boolean c_child = child.getC_child();
if(c_child){
String string = child_num.getText().toString();
int i2 = Integer.parseInt(string);
i2=i2-1;
child_num.setText(i2+"");
sum=sum-1;
getnum.getitemnum(sum);
}
}
});
jia.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Child child = Adper.this.child.get(i).get(i1);
Boolean c_child = child.getC_child();
if(c_child){
String string = child_num.getText().toString();
int i2 = Integer.parseInt(string);
i2=i2+1;
child_num.setText(i2+"");
sum=sum+1;
getnum.getitemnum(sum);
}
}
});
return view;
}
private Getnum getnum;
public interface Getnum{
void getitemnum(int sum);
}
public void setGetnum(Getnum getnum) {
this.getnum = getnum;
}
@Override
public boolean isChildSelectable(int i, int i1) {
return true;
}
}
<TextView
android:id="@+id/gouwuche"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="购物车"
android:gravity="center"
/>
<ExpandableListView
android:id="@+id/expend"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/ll"
android:layout_below="@+id/gouwuche"
></ExpandableListView>
<LinearLayout
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
>
<CheckBox
android:id="@+id/main_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/heji"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
/>
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#f95252"
android:text="结算"
android:gravity="center"
android:textColor="#fff"
/>
</LinearLayout>
<CheckBox
android:id="@+id/parent_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
/>
<TextView
android:id="@+id/parent_dianpu"
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_centerHorizontal="true"
/>
<CheckBox
android:id="@+id/child_cb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
/>
<LinearLayout
android:layout_width="200dp"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:id="@+id/child_name"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
<ImageView
android:id="@+id/child_image"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@mipmap/ic_launcher"
/>
</LinearLayout>
<LinearLayout
android:layout_width="100dp"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center"
>
<Button
android:id="@+id/jian"
android:layout_width="40dp"
android:layout_height="40dp"
android:text="-"
/>
<Button
android:id="@+id/child_num"
android:layout_width="40dp"
android:layout_height="40dp" />
<Button
android:id="@+id/jia"
android:layout_width="40dp"
android:layout_height="40dp"
android:text="+"
/>
</LinearLayout>
<Button
android:id="@+id/delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除"
android:layout_marginTop="30dp"
android:background="#f47311"
/>