public class MyAdapter extends BaseExpandableListAdapter {
private static final String TAG = "MyAdapter";
private List<Baen.DataBean> data;
public MyAdapter(List<Baen.DataBean> data) {
this.data = data;
}
@Override
public int getGroupCount() {
return data == null ? 0 : data.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return data.get(groupPosition).getList() == null ? 0 : data.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 View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
Baen.DataBean dataBean = data.get(groupPosition);
GViewHolder gViewHolder;
if (convertView == null) {
convertView = View.inflate(parent.getContext(), R.layout.item_cart_parent, null);
gViewHolder = new GViewHolder(convertView);
convertView.setTag(gViewHolder);
} else {
gViewHolder = (GViewHolder) convertView.getTag();
}
gViewHolder.sellerNameTv.setText(dataBean.getSellerName());
boolean currentSellerAllProductSelected = isCurrentSellerAllProductSelected(groupPosition);
gViewHolder.sellerCb.setChecked(currentSellerAllProductSelected);
gViewHolder.sellerCb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG,"monCartListChangeListener");
monCartListChangeListener.onSellerCheckedChange(groupPosition);
}
});
return convertView;
}
//当前商家所有商品是否被选中
public boolean isCurrentSellerAllProductSelected(int groupPosition) {
Baen.DataBean dataBean = data.get(groupPosition);
List<Baen.ListBaen> list = dataBean.getList();
for (Baen.ListBaen listBaen : list) {
if (listBaen.getSelected() == 0) {
return false;
}
}
return true;
}
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
Baen.DataBean dataBean = data.get(groupPosition);
List<Baen.ListBaen> list = dataBean.getList();
CViewHolder cViewHolder;
if (convertView == null) {
convertView = View.inflate(parent.getContext(), R.layout.item_cart_child, null);
cViewHolder = new CViewHolder(convertView);
convertView.setTag(cViewHolder);
} else {
cViewHolder = (CViewHolder) convertView.getTag();
}
Baen.ListBaen listBaen = list.get(childPosition);
String title = listBaen.getTitle();
String images = list.get(childPosition).getImages();
String[] split = images.split("\\|");
//单价
cViewHolder.priceChilid.setText(listBaen.getPrice() + "");
cViewHolder.chiidCheckbox.setChecked(listBaen.getSelected()==1);
//图片
ImageLoader.getInstance().displayImage(split[0], cViewHolder.chilidImage, MyApp.getOptions());
cViewHolder.chiidCheckbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("TAG","checkbox");
if (monCartListChangeListener!=null){
monCartListChangeListener.onProductCheckedChange(groupPosition,childPosition);
}
}
});
cViewHolder.addRemoveView.setNb(listBaen.getNum());
cViewHolder.addRemoveView.setOnNumberChangeListener(new MyAddSubView.OnNumberChangeListener() {
@Override
public void onNumberChange(int num) {
monCartListChangeListener.onProductNumberChange(groupPosition,childPosition,num);
}
});
cViewHolder.titleText.setText(title);
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
//所有的商品是否被选中
public boolean isAllProductsSelected() {
for (int i = 0; i < data.size(); i++) {
Baen.DataBean dataBean = data.get(i);
List<Baen.ListBaen> list = dataBean.getList();
for (int j = 0; j < list.size(); j++) {
if (list.get(j).getSelected() == 0) {
return false;
}
}
}
return true;
}
//总价格
public float Totalcost() {
float totoprice = 0;
for (int i = 0; i < data.size(); i++) {
Baen.DataBean dataBean = data.get(i);
List<Baen.ListBaen> list = dataBean.getList();
for (int j = 0; j < list.size(); j++) {
double price = list.get(j).getPrice();
int num = list.get(j).getNum();
totoprice += price * num;
}
}
return totoprice;
}
//总数量
public int thetotalAmount() {
int totoNber = 0;
for (int i = 0; i < data.size(); i++) {
Baen.DataBean dataBean = data.get(i);
List<Baen.ListBaen> list = dataBean.getList();
for (int j = 0; j < list.size(); j++) {
int num = list.get(j).getNum();
totoNber += num;
}
}
return totoNber;
}
//当商家得checkbox被点击得时候调用,设置当前商家得所有商品得状态
public void changeCurrentSellerAllProductsStatus(int groupPosition, boolean isSelected) {
Baen.DataBean dataBean = data.get(groupPosition);
List<Baen.ListBaen> list = dataBean.getList();
for (int i = 0; i < list.size(); i++) {
Baen.ListBaen listBaen = list.get(i);
listBaen.setSelected(isSelected ? 1 : 0);
}
}
//当商品得checkbox被点击得时候调用,改变当前商品状态
public void changeCurrentProductStatus(int groupPosition, int childPosition) {
Log.d("TAG","来过");
Baen.DataBean dataBean = data.get(groupPosition);
List<Baen.ListBaen> list = dataBean.getList();
Baen.ListBaen listBaen = list.get(childPosition);
listBaen.setSelected(listBaen.getSellerid() == 0 ? 1 : 0);
}
//当加减器被点击得时候调用,改变当前商品得数量
public void changeCurrentProductNumber(int groupPosition, int childPosition, int number) {
Baen.DataBean dataBean = data.get(groupPosition);
List<Baen.ListBaen> list = dataBean.getList();
Baen.ListBaen listBaen = list.get(childPosition);
listBaen.setNum(number);
}
//设置所有商品得状态
public void changeAllProductsStatus(boolean selected) {
for (int i = 0; i < data.size(); i++) {
Baen.DataBean dataBean = data.get(i);
List<Baen.ListBaen> list = dataBean.getList();
for (int j = 0; j < list.size(); j++) {
list.get(j).setSelected(selected ? 1 : 0);
}
}
}
static class GViewHolder {
@BindView(R.id.seller_cb)
CheckBox sellerCb;
@BindView(R.id.seller_name_tv)
TextView sellerNameTv;
GViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
onCartListChangeListener monCartListChangeListener;
public void setMonCartListChangeListener(onCartListChangeListener monCartListChangeListener) {
this.monCartListChangeListener = monCartListChangeListener;
}
public interface onCartListChangeListener {
void onSellerCheckedChange(int groupPosition);
void onProductCheckedChange(int groupPosition, int childPosition);
void onProductNumberChange(int groupPosition, int childPosition, int number);
}
static class CViewHolder {
@BindView(R.id.chiid_checkbox)
CheckBox chiidCheckbox;
@BindView(R.id.chilid_image)
ImageView chilidImage;
@BindView(R.id.title_text)
TextView titleText;
@BindView(R.id.price_chilid)
TextView priceChilid;
@BindView(R.id.add_remove_view)
MyAddSubView addRemoveView;
CViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
}
private static final String TAG = "MyAdapter";
private List<Baen.DataBean> data;
public MyAdapter(List<Baen.DataBean> data) {
this.data = data;
}
@Override
public int getGroupCount() {
return data == null ? 0 : data.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return data.get(groupPosition).getList() == null ? 0 : data.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 View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
Baen.DataBean dataBean = data.get(groupPosition);
GViewHolder gViewHolder;
if (convertView == null) {
convertView = View.inflate(parent.getContext(), R.layout.item_cart_parent, null);
gViewHolder = new GViewHolder(convertView);
convertView.setTag(gViewHolder);
} else {
gViewHolder = (GViewHolder) convertView.getTag();
}
gViewHolder.sellerNameTv.setText(dataBean.getSellerName());
boolean currentSellerAllProductSelected = isCurrentSellerAllProductSelected(groupPosition);
gViewHolder.sellerCb.setChecked(currentSellerAllProductSelected);
gViewHolder.sellerCb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG,"monCartListChangeListener");
monCartListChangeListener.onSellerCheckedChange(groupPosition);
}
});
return convertView;
}
//当前商家所有商品是否被选中
public boolean isCurrentSellerAllProductSelected(int groupPosition) {
Baen.DataBean dataBean = data.get(groupPosition);
List<Baen.ListBaen> list = dataBean.getList();
for (Baen.ListBaen listBaen : list) {
if (listBaen.getSelected() == 0) {
return false;
}
}
return true;
}
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
Baen.DataBean dataBean = data.get(groupPosition);
List<Baen.ListBaen> list = dataBean.getList();
CViewHolder cViewHolder;
if (convertView == null) {
convertView = View.inflate(parent.getContext(), R.layout.item_cart_child, null);
cViewHolder = new CViewHolder(convertView);
convertView.setTag(cViewHolder);
} else {
cViewHolder = (CViewHolder) convertView.getTag();
}
Baen.ListBaen listBaen = list.get(childPosition);
String title = listBaen.getTitle();
String images = list.get(childPosition).getImages();
String[] split = images.split("\\|");
//单价
cViewHolder.priceChilid.setText(listBaen.getPrice() + "");
cViewHolder.chiidCheckbox.setChecked(listBaen.getSelected()==1);
//图片
ImageLoader.getInstance().displayImage(split[0], cViewHolder.chilidImage, MyApp.getOptions());
cViewHolder.chiidCheckbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("TAG","checkbox");
if (monCartListChangeListener!=null){
monCartListChangeListener.onProductCheckedChange(groupPosition,childPosition);
}
}
});
cViewHolder.addRemoveView.setNb(listBaen.getNum());
cViewHolder.addRemoveView.setOnNumberChangeListener(new MyAddSubView.OnNumberChangeListener() {
@Override
public void onNumberChange(int num) {
monCartListChangeListener.onProductNumberChange(groupPosition,childPosition,num);
}
});
cViewHolder.titleText.setText(title);
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
//所有的商品是否被选中
public boolean isAllProductsSelected() {
for (int i = 0; i < data.size(); i++) {
Baen.DataBean dataBean = data.get(i);
List<Baen.ListBaen> list = dataBean.getList();
for (int j = 0; j < list.size(); j++) {
if (list.get(j).getSelected() == 0) {
return false;
}
}
}
return true;
}
//总价格
public float Totalcost() {
float totoprice = 0;
for (int i = 0; i < data.size(); i++) {
Baen.DataBean dataBean = data.get(i);
List<Baen.ListBaen> list = dataBean.getList();
for (int j = 0; j < list.size(); j++) {
double price = list.get(j).getPrice();
int num = list.get(j).getNum();
totoprice += price * num;
}
}
return totoprice;
}
//总数量
public int thetotalAmount() {
int totoNber = 0;
for (int i = 0; i < data.size(); i++) {
Baen.DataBean dataBean = data.get(i);
List<Baen.ListBaen> list = dataBean.getList();
for (int j = 0; j < list.size(); j++) {
int num = list.get(j).getNum();
totoNber += num;
}
}
return totoNber;
}
//当商家得checkbox被点击得时候调用,设置当前商家得所有商品得状态
public void changeCurrentSellerAllProductsStatus(int groupPosition, boolean isSelected) {
Baen.DataBean dataBean = data.get(groupPosition);
List<Baen.ListBaen> list = dataBean.getList();
for (int i = 0; i < list.size(); i++) {
Baen.ListBaen listBaen = list.get(i);
listBaen.setSelected(isSelected ? 1 : 0);
}
}
//当商品得checkbox被点击得时候调用,改变当前商品状态
public void changeCurrentProductStatus(int groupPosition, int childPosition) {
Log.d("TAG","来过");
Baen.DataBean dataBean = data.get(groupPosition);
List<Baen.ListBaen> list = dataBean.getList();
Baen.ListBaen listBaen = list.get(childPosition);
listBaen.setSelected(listBaen.getSellerid() == 0 ? 1 : 0);
}
//当加减器被点击得时候调用,改变当前商品得数量
public void changeCurrentProductNumber(int groupPosition, int childPosition, int number) {
Baen.DataBean dataBean = data.get(groupPosition);
List<Baen.ListBaen> list = dataBean.getList();
Baen.ListBaen listBaen = list.get(childPosition);
listBaen.setNum(number);
}
//设置所有商品得状态
public void changeAllProductsStatus(boolean selected) {
for (int i = 0; i < data.size(); i++) {
Baen.DataBean dataBean = data.get(i);
List<Baen.ListBaen> list = dataBean.getList();
for (int j = 0; j < list.size(); j++) {
list.get(j).setSelected(selected ? 1 : 0);
}
}
}
static class GViewHolder {
@BindView(R.id.seller_cb)
CheckBox sellerCb;
@BindView(R.id.seller_name_tv)
TextView sellerNameTv;
GViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
onCartListChangeListener monCartListChangeListener;
public void setMonCartListChangeListener(onCartListChangeListener monCartListChangeListener) {
this.monCartListChangeListener = monCartListChangeListener;
}
public interface onCartListChangeListener {
void onSellerCheckedChange(int groupPosition);
void onProductCheckedChange(int groupPosition, int childPosition);
void onProductNumberChange(int groupPosition, int childPosition, int number);
}
static class CViewHolder {
@BindView(R.id.chiid_checkbox)
CheckBox chiidCheckbox;
@BindView(R.id.chilid_image)
ImageView chilidImage;
@BindView(R.id.title_text)
TextView titleText;
@BindView(R.id.price_chilid)
TextView priceChilid;
@BindView(R.id.add_remove_view)
MyAddSubView addRemoveView;
CViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
}