public class ShoppingCartAdapter extends BaseExpandableListAdapter {
private Context mContext;
private ShoppingCartBean mShoppingCartBean;
public ShoppingCartAdapter(Context context){
this.mContext = context;
}
public void setData(ShoppingCartBean shoppingCartBean){
this.mShoppingCartBean = shoppingCartBean;
}
@Override
public int getGroupCount() {
if(mShoppingCartBean == null){
return 0;
}
return mShoppingCartBean.getData().size();
}
@Override
public int getChildrenCount(int groupPosition) {
if(mShoppingCartBean == null){
return 0;
}
return mShoppingCartBean.getData().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(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
ParentViewHolder parentViewHolder;
if(convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_group, null);
parentViewHolder = new ParentViewHolder();
parentViewHolder.shopName = convertView.findViewById(R.id.shopName);
parentViewHolder.checkBox = convertView.findViewById(R.id.checkbox_parent);
convertView.setTag(parentViewHolder);
} else {
parentViewHolder = (ParentViewHolder) convertView.getTag();
}
parentViewHolder.checkBox.setChecked(mShoppingCartBean.getData().get(groupPosition).isCheck());
parentViewHolder.shopName.setText(mShoppingCartBean.getData().get(groupPosition).getSellerName());
parentViewHolder.checkBox.setTag(groupPosition);
parentViewHolder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckBox checkBox = (CheckBox) v;
boolean checked = checkBox.isChecked();
int groupPosition = Integer.parseInt(checkBox.getTag().toString());
mShoppingCartBean.getData().get(groupPosition).setCheck(checked);
selectGroup(groupPosition,checked);
boolean selectAllGroup = isSelectAllGroup();
mCheckBox.setChecked(selectAllGroup);
notifyDataSetChanged();
}
});
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
ChildViewHolder childViewHolder;
if(convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_child, null);
childViewHolder = new ChildViewHolder();
childViewHolder.goodsName = convertView.findViewById(R.id.goodsName);
childViewHolder.checkBox = convertView.findViewById(R.id.checkbox_child);
convertView.setTag(childViewHolder);
} else {
childViewHolder = (ChildViewHolder) convertView.getTag();
}
childViewHolder.checkBox.setChecked(mShoppingCartBean.getData().get(groupPosition).getList().get(childPosition).isCheck());
childViewHolder.goodsName.setText(mShoppingCartBean.getData().get(groupPosition).getList().get(childPosition).getTitle());
childViewHolder.checkBox.setTag(groupPosition+"#"+childPosition);
childViewHolder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckBox checkBox = (CheckBox) v;
String tag = (String) v.getTag();
int groupPosition = Integer.parseInt(tag.split("#")[0]);
int childPosition = Integer.parseInt(tag.split("#")[1]);
ShoppingCartBean.DataBean dataBean = mShoppingCartBean.getData().get(groupPosition);
ShoppingCartBean.DataBean.ListBean goodsBean = dataBean.getList().get(childPosition);
goodsBean.setCheck(checkBox.isChecked());
boolean selectGroup = isSelectGroup(groupPosition);
dataBean.setCheck(selectGroup);
boolean selectAllGroup = isSelectAllGroup();
mCheckBox.setChecked(selectAllGroup);
notifyDataSetChanged();
}
});
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
CheckBox mCheckBox;
public void setCheckBox(final CheckBox checkBox) {
this.mCheckBox = checkBox;
mCheckBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckBox checkBox = (CheckBox) v;
selectAll(checkBox.isChecked());
}
});
}
public void selectGroup(int groupPosition,boolean isChecked){
for (int i = 0; i < mShoppingCartBean.getData().get(groupPosition).getList().size(); i++) {
ShoppingCartBean.DataBean.ListBean listBean = mShoppingCartBean.getData().get(groupPosition).getList().get(i);
listBean.setCheck(isChecked);
}
}
private void selectAll(boolean checked) {
for (int i = 0; i < mShoppingCartBean.getData().size(); i++) {
ShoppingCartBean.DataBean dataBean = mShoppingCartBean.getData().get(i);
dataBean.setCheck(checked);
for (int j = 0; j < dataBean.getList().size(); j++) {
ShoppingCartBean.DataBean.ListBean listBean = dataBean.getList().get(j);
listBean.setCheck(checked);
}
}
notifyDataSetChanged();
}
private boolean isSelectGroup(int groupPosition){
for (int i = 0; i < mShoppingCartBean.getData().get(groupPosition).getList().size(); i++) {
ShoppingCartBean.DataBean.ListBean listBean = mShoppingCartBean.getData().get(groupPosition).getList().get(i);
boolean check = listBean.isCheck();
if (!check){
return false;
}
}
return true;
}
private boolean isSelectAllGroup(){
for (int i = 0; i < mShoppingCartBean.getData().size(); i++) {
ShoppingCartBean.DataBean dataBean = mShoppingCartBean.getData().get(i);
boolean check = dataBean.isCheck();
if (!check) {
return false;
}
}
return true;
}
class ParentViewHolder {
TextView shopName;
CheckBox checkBox;
}
class ChildViewHolder {
TextView goodsName;
CheckBox checkBox;
}
}