Adapter类里
public class Adapters extends BaseExpandableListAdapter {
Context context;
List<GBean.DataBean> dataBeans;
public Adapters(Context context, List<GBean.DataBean> dataBeans) {
this.context = context;
this.dataBeans = dataBeans;
}
//父条目数量
@Override
public int getGroupCount() {
if (dataBeans == null) {
return 0;
}
return dataBeans.size();
}
//子条目数量
@Override
public int getChildrenCount(int groupPosition) {
if (dataBeans == null) {
return 0;
}
return dataBeans.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 true;
}
@Override
public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.fadapter, null);
viewHolder = new ViewHolder();
viewHolder.checkBox = convertView.findViewById(R.id.fchecked);
viewHolder.shopName = convertView.findViewById(R.id.ftext);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.shopName.setText(dataBeans.get(groupPosition).getSellerName());
viewHolder.checkBox.setChecked(dataBeans.get(groupPosition).isChecked());
//父条目点击事件
viewHolder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckBox checkBox = (CheckBox) v;
boolean checked = checkBox.isChecked();
dataBeans.get(groupPosition).setChecked(checked);
zchecked(checked, groupPosition);
boolean qchecked = qchecked();
box.setChecked(qchecked);
zongjia();
notifyDataSetChanged();
}
});
return convertView;
}
//父条目不局
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
final ViewHodels viewHodels;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.zadapter, null);
viewHodels = new ViewHodels();
viewHodels.checked = convertView.findViewById(R.id.zchenked);
viewHodels.goodsName = convertView.findViewById(R.id.ztext);
viewHodels.jiagetext = convertView.findViewById(R.id.jiagetext);
viewHodels.jia = convertView.findViewById(R.id.jia);
viewHodels.jian = convertView.findViewById(R.id.jian);
viewHodels.shuliang = convertView.findViewById(R.id.shuliang);
convertView.setTag(viewHodels);
} else {
viewHodels = (ViewHodels) convertView.getTag();
}
viewHodels.goodsName.setText(dataBeans.get(groupPosition).getList().get(childPosition).getTitle());
viewHodels.checked.setChecked(dataBeans.get(groupPosition).getList().get(childPosition).isChecked());
viewHodels.jiagetext.setText(dataBeans.get(groupPosition).getList().get(childPosition).getPrice());
viewHodels.shuliang.setText(dataBeans.get(groupPosition).getList().get(childPosition).getNum());
viewHodels.jian.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String num = dataBeans.get(groupPosition).getList().get(childPosition).getNum();
int i = Integer.parseInt(num);
i--;
Log.i("AA", "渐渐" + i);
dataBeans.get(groupPosition).getList().get(childPosition).setNum(i + "");
String num1 = dataBeans.get(groupPosition).getList().get(childPosition).getNum();
int i1 = Integer.parseInt(num1);
viewHodels.shuliang.setText(i1 + "");
zongjia();
notifyDataSetChanged();
}
});
//加按钮点击事件
viewHodels.jia.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String num = dataBeans.get(groupPosition).getList().get(childPosition).getNum();
int i = Integer.parseInt(num);
i++;
dataBeans.get(groupPosition).getList().get(childPosition).setNum(i + "");
String num1 = dataBeans.get(groupPosition).getList().get(childPosition).getNum();
int i1 = Integer.parseInt(num1);
viewHodels.shuliang.setText(i1 + "");
zongjia();
notifyDataSetChanged();
}
});
//子复选框点击事件
viewHodels.checked.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckBox checkBox = (CheckBox) v;
boolean checked = checkBox.isChecked();
Log.i("AA", "状态" + checked);
GBean.DataBean.ListBean listBean = dataBeans.get(groupPosition).getList().get(childPosition);
listBean.setChecked(checked);
boolean zquanxuan = zquanxuan(groupPosition);
dataBeans.get(groupPosition).setChecked(zquanxuan);
boolean qchecked = qchecked();
box.setChecked(qchecked);
zongjia();
notifyDataSetChanged();
}
});
return convertView;
}
//判断父条目是否全部选中
private boolean qchecked() {
for (int i = 0; i < dataBeans.size(); i++) {
boolean checked = dataBeans.get(i).isChecked();
if (!checked) {
return false;
}
}
return true;
}
//子条目点之后循环判断是否全部选中
private boolean zquanxuan(int groupPosition) {
for (int i = 0; i < dataBeans.get(groupPosition).getList().size(); i++) {
GBean.DataBean.ListBean listBean = dataBeans.get(groupPosition).getList().get(i);
boolean checked1 = listBean.isChecked();
if (!checked1) {
return false;
}
}
return true;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
//点击之后把子条目里的复选框状态全部改变
public void zchecked(boolean checked, int groupPosition) {
for (int i = 0; i < dataBeans.get(groupPosition).getList().size(); i++) {
GBean.DataBean.ListBean listBean = dataBeans.get(groupPosition).getList().get(i);
listBean.setChecked(checked);
}
}
//全选复选框点击事件
private CheckBox box;
public void setBox(CheckBox box) {
this.box = box;
box.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckBox checkBox = (CheckBox) v;
boolean checked = checkBox.isChecked();
quanxuan(checked);
zongjia();
notifyDataSetChanged();
}
});
}
//全选点击事件
private void quanxuan(boolean checked) {
for (int i = 0; i < dataBeans.size(); i++) {
List<GBean.DataBean.ListBean> list = dataBeans.get(i).getList();
dataBeans.get(i).setChecked(checked);
for (int j = 0; j < list.size(); j++) {
list.get(j).setChecked(checked);
}
}
}
private TextView textView;
public void setTextView(TextView textView) {
this.textView = textView;
}
//机算总价
private double all;
private void zongjia() {
for (int i = 0; i < dataBeans.size(); i++) {
List<GBean.DataBean.ListBean> list = dataBeans.get(i).getList();
for (int j = 0; j < list.size(); j++) {
boolean checked = list.get(j).isChecked();
if (checked) {
String bargainPrice = list.get(j).getPrice();
String num = list.get(j).getNum();
double v1 = Double.parseDouble(num);
double v = Double.parseDouble(bargainPrice);
double aa = v * v1;
all += aa;
textView.setText(all + "");
} else {
all=0;
textView.setText(all + "");
}
}
}
notifyDataSetChanged();
}
class ViewHolder {
TextView shopName;
CheckBox checkBox;
}
class ViewHodels {
TextView goodsName;
CheckBox checked;
TextView jiagetext;
Button jia;
Button jian;
TextView shuliang;
}
}
父布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<CheckBox
android:id="@+id/quanxuan"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/zong"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="价格为:" />
</LinearLayout>
<ExpandableListView
android:id="@+id/expandble"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="false"></ExpandableListView>
父条目必须要添加条件
android:focusable=“false”
android:clickable=“true”