public class MyAdapter extends BaseExpandableListAdapter {
List<CartInfo.DataBean> sellerData;
public MyAdapter(List<CartInfo.DataBean> sellerData) {
this.sellerData = sellerData;
}
@Override
public int getGroupCount() {
return sellerData.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return sellerData.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 false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
@Override
public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
GroupViewHolder groupViewHolder;
if (convertView == null) {
convertView = View.inflate(parent.getContext(), R.layout.group_view_layout_shopcar, null);
groupViewHolder = new GroupViewHolder(convertView);
convertView.setTag(groupViewHolder);
} else {
groupViewHolder = (GroupViewHolder) convertView.getTag();
}
//赋值
CartInfo.DataBean dataBean = sellerData.get(groupPosition);
//商家名称
groupViewHolder.tvTitleGroup.setText(dataBean.getSellerName());
boolean currentSellerAllProductSelected = isCurrentSellerAllProductSelected(groupPosition);
//商家checkbox
groupViewHolder.cbGroupItem.setChecked(currentSellerAllProductSelected);
//触发监听
groupViewHolder.cbGroupItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onCartListChangeListener != null) {
onCartListChangeListener.SellerSelectedChange(groupPosition);
}
}
});
return convertView;
}
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
final ChildViewHolder childViewHolder;
if (convertView == null) {
convertView = View.inflate(parent.getContext(), R.layout.child_view_layout_shopcar, null);
childViewHolder = new ChildViewHolder(convertView);
convertView.setTag(childViewHolder);
} else {
childViewHolder = (ChildViewHolder) convertView.getTag();
}
//赋值
final CartInfo.DataBean.ListBean listBean = sellerData.get(groupPosition).getList().get(childPosition);
//商品名称
childViewHolder.tvTitleChild.setText(listBean.getTitle());
//商品图片
String[] split = listBean.getImages().split("\\|");
Picasso.get().load(split[0]).into(childViewHolder.ivIconChild);
// Glide.with(parent.getContext()).load(split[0]).into(childViewHolder.ivIconChild);
//商品价格
childViewHolder.tvPriceChild.setText("¥" + listBean.getPrice());
//商品checkbox
childViewHolder.cbChildItem.setChecked(listBean.getSelected() == 1);
childViewHolder.cbChildItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onCartListChangeListener != null) {
onCartListChangeListener.ProductSelectedChange(groupPosition, childPosition);
}
}
});
//商品的数量
childViewHolder.addSubViewChild.setNumber(listBean.getNum());
childViewHolder.addSubViewChild.setOnNumberChangeListener(new MyAddSubView.OnNumberChangeListener() {
@Override
public void OnNumberChange(int num) {
childViewHolder.addSubViewChild.setNumber(num);
if (onCartListChangeListener != null) {
onCartListChangeListener.ProductNumberChange(groupPosition, childPosition, num);
}
}
});
return convertView;
}
public boolean isCurrentSellerAllProductSelected(int groupPosition) {
List<CartInfo.DataBean.ListBean> list = sellerData.get(groupPosition).getList();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getSelected() == 0) {
return false;
}
}
return true;
}
public void changeCurrentSellerAllProductSelected(int groupPosition, boolean selected) {
List<CartInfo.DataBean.ListBean> list = sellerData.get(groupPosition).getList();
for (int i = 0; i < list.size(); i++) {
list.get(i).setSelected(selected ? 1 : 0);
}
}
public void changeCurrentProductSelected(int groupPosition, int childPosition) {
CartInfo.DataBean.ListBean listBean = sellerData.get(groupPosition).getList().get(childPosition);
listBean.setSelected(listBean.getSelected() == 0 ? 1 : 0);
}
public void changeCurrentProductNumber(int groupPosition, int childPosition, int number) {
CartInfo.DataBean.ListBean listBean = sellerData.get(groupPosition).getList().get(childPosition);
listBean.setNum(number);
}
public boolean isAllProductsSelected() {
for (int i = 0; i < sellerData.size(); i++) {
List<CartInfo.DataBean.ListBean> list = sellerData.get(i).getList();
for (int j = 0; j < list.size(); j++) {
if (list.get(j).getSelected() == 0) {
return false;
}
}
}
return true;
}
public void changeAllProductsSelected(boolean selected) {
for (int i = 0; i < sellerData.size(); i++) {
List<CartInfo.DataBean.ListBean> list = sellerData.get(i).getList();
for (int j = 0; j < list.size(); j++) {
list.get(j).setSelected(selected ? 1 : 0);
}
}
}
public float calculateTotalPrice() {
float totalPrice = 0;
for (int i = 0; i < sellerData.size(); i++) {
List<CartInfo.DataBean.ListBean> list = sellerData.get(i).getList();
for (int j = 0; j < list.size(); j++) {
//只有选中采取计算
if (list.get(j).getSelected() == 1) {
float price = list.get(j).getPrice();
int num = list.get(j).getNum();
totalPrice += price * num;
}
}
}
return totalPrice;
}
public int calculateTotalNumber() {
int totalNumber = 0;
for (int i = 0; i < sellerData.size(); i++) {
List<CartInfo.DataBean.ListBean> list = sellerData.get(i).getList();
for (int j = 0; j < list.size(); j++) {
//只有选中采取计算
if (list.get(j).getSelected() == 1) {
int num = list.get(j).getNum();
totalNumber += num;
}
}
}
return totalNumber;
}
static class GroupViewHolder {
CheckBox cbGroupItem;
TextView tvTitleGroup;
GroupViewHolder(View view) {
tvTitleGroup = view.findViewById(R.id.tv_title_group);
cbGroupItem = view.findViewById(R.id.cb_group_item);
}
}
static class ChildViewHolder {
CheckBox cbChildItem;
ImageView ivIconChild;
TextView tvTitleChild;
TextView tvPriceChild;
MyAddSubView addSubViewChild;
ChildViewHolder(View view) {
cbChildItem = view.findViewById(R.id.cb_child_item);
ivIconChild = view.findViewById(R.id.iv_icon_child);
tvTitleChild = view.findViewById(R.id.tv_title_child);
tvPriceChild = view.findViewById(R.id.tv_price_child);
addSubViewChild = view.findViewById(R.id.add_sub_view_child);
}
}
OnCartListChangeListener onCartListChangeListener;
public void setOnCartListChangeListener(OnCartListChangeListener onCartListChangeListener) {
this.onCartListChangeListener = onCartListChangeListener;
}
public interface OnCartListChangeListener {
void SellerSelectedChange(int groupPosition);
void ProductSelectedChange(int groupPosition, int childPosition);
void ProductNumberChange(int groupPosition, int childPosition, int number);
}
}