package com.bwie.shoppcardemo.view.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bwie.shoppcardemo.R;
import com.bwie.shoppcardemo.bean.ShoppCarBean;
import java.util.List;
/**
* Created by rookie on 2018/1/9.
*/
public class MyExpandAdapter extends BaseExpandableListAdapter {
private List<ShoppCarBean.DataBean> data;
private Context context;
//商品加减的一个接口变量
private ModifyGoodsItemNumberListener modifyGoodsItemNumberListener;
private CheckGroupItemListener checkGroupItemListener;
//接收是否处于编辑状态的一个boolean值
private boolean isEditor;
public MyExpandAdapter(Context context){
this.context = context;
}
//设置数据
public void setList(List<ShoppCarBean.DataBean> data){
this.data = data;
notifyDataSetChanged();
}
//商家以及商品是否被选中的一个监听
public void setCheckGroupItemListener(CheckGroupItemListener checkGroupItemListener){
this.checkGroupItemListener = checkGroupItemListener;
}
//设置商品的加减监听
public void setModifyGoodsItemNumberListener(ModifyGoodsItemNumberListener modifyGoodsItemNumberListener){
this.modifyGoodsItemNumberListener = modifyGoodsItemNumberListener;
}
//是否显示删除按钮
public void showDeleteButton(boolean isEditor){
this.isEditor = isEditor;
//刷新适配器
notifyDataSetChanged();
}
@Override
public int getGroupCount() {
return data != null ? data.size() : 0;
}
@Override
public int getChildrenCount(int i) {
return data != null && data.get(i).getList() != null ? data.get(i).getList().size() : 0;
}
@Override
public Object getGroup(int groupPosition) {
return data.get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return data.get(groupPosition).getList().get(childPosition);
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getGroupView(final int groupPosition, boolean b, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = LayoutInflater.from(context).inflate(R.layout.layout_group_item,parent,false);
}
//查找控件
CheckBox ck_group_choosed = convertView.findViewById(R.id.ck_group_choosed);
//设置商家checkbox复选框的状态
if(data.get(groupPosition).isGroupChoosed()){
ck_group_choosed.setChecked(true);
}else{
ck_group_choosed.setChecked(false);
}
//ck_group_choosed.setChan
ck_group_choosed.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
checkGroupItemListener.checkGroupItem(groupPosition,((CheckBox)view).isChecked());
}
});
//赋值
ck_group_choosed.setText(data.get(groupPosition).getSellerName());
return convertView;
}
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean b, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = LayoutInflater.from(context).inflate(R.layout.layout_child_item,parent,false);
}
//商品选择
CheckBox ck_child_choosed = convertView.findViewById(R.id.ck_child_choose);
//商品图片
ImageView iv_show_pic = convertView.findViewById(R.id.iv_show_pic);
//商品主标题
TextView tv_commodity_name = convertView.findViewById(R.id.tv_commodity_name);
//商品副标题
TextView tv_commodity_attr = convertView.findViewById(R.id.tv_commodity_attr);
//商品价格
TextView tv_commodity_price = convertView.findViewById(R.id.tv_commodity_price);
//商品数量
TextView tv_commodity_num = convertView.findViewById(R.id.tv_commodity_num);
//商品减
TextView iv_sub = convertView.findViewById(R.id.iv_sub);
//商品加减中的数量变化
final TextView tv_commodity_show_num = convertView.findViewById(R.id.tv_commodity_show_num);
//商品加
TextView iv_add = convertView.findViewById(R.id.iv_add);
//删除按钮
Button btn_commodity_delete = convertView.findViewById(R.id.btn_commodity_delete);
//设置文本信息
tv_commodity_name.setText(data.get(groupPosition).getList().get(childPosition).getTitle());
tv_commodity_attr.setText(data.get(groupPosition).getList().get(childPosition).getSubhead());
tv_commodity_price.setText("¥"+data.get(groupPosition).getList().get(childPosition).getPrice());
tv_commodity_num.setText("x"+data.get(groupPosition).getList().get(childPosition).getNum());
tv_commodity_show_num.setText(data.get(groupPosition).getList().get(childPosition).getNum()+"");
//分割图片地址
String images = data.get(groupPosition).getList().get(childPosition).getImages();
String[] urls = images.split("\\|");
//加载商品图片
Glide.with(context)
.load(urls[0])
.crossFade()
.into(iv_show_pic);
//商品加
iv_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
modifyGoodsItemNumberListener.doIncrease(groupPosition,childPosition,tv_commodity_show_num);
}
});
//设置商品加减的按钮
//商品减
iv_sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
modifyGoodsItemNumberListener.doDecrease(groupPosition,childPosition,tv_commodity_show_num);
}
});
//商品复选框是否被选中
ck_child_choosed.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//isChecked false true
checkGroupItemListener.checkChildItem(groupPosition,childPosition,((CheckBox)view).isChecked());
}
});
//处理商品的选中状态
if(data.get(groupPosition).getList().get(childPosition).isChildChoosed()){
ck_child_choosed.setChecked(true);
}else{
ck_child_choosed.setChecked(false);
}
//控制删除按钮的隐藏与显示
if(isEditor){
btn_commodity_delete.setVisibility(View.VISIBLE);
}else{
btn_commodity_delete.setVisibility(View.GONE);
}
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
/**
* 商家的复选框以及商品的复选框是否被选中的接口
*/
/**
* 商家复选框以及商品复选框是否被选中接口
*/
public interface CheckGroupItemListener{
//商家的条目的复选框监听
void checkGroupItem(int groupPosition,boolean isChecked);
//商品的
void checkChildItem(int groupPosition,int childPosition,boolean isChecked);
}
/**
* 商品加减接口
*/
public interface ModifyGoodsItemNumberListener{
//商品添加操作
void doIncrease(int groupPosition,int childPosition,View view);
//商品减少操作
void doDecrease(int groupPosition,int childPosition,View view);
}
}
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bwie.shoppcardemo.R;
import com.bwie.shoppcardemo.bean.ShoppCarBean;
import java.util.List;
/**
* Created by rookie on 2018/1/9.
*/
public class MyExpandAdapter extends BaseExpandableListAdapter {
private List<ShoppCarBean.DataBean> data;
private Context context;
//商品加减的一个接口变量
private ModifyGoodsItemNumberListener modifyGoodsItemNumberListener;
private CheckGroupItemListener checkGroupItemListener;
//接收是否处于编辑状态的一个boolean值
private boolean isEditor;
public MyExpandAdapter(Context context){
this.context = context;
}
//设置数据
public void setList(List<ShoppCarBean.DataBean> data){
this.data = data;
notifyDataSetChanged();
}
//商家以及商品是否被选中的一个监听
public void setCheckGroupItemListener(CheckGroupItemListener checkGroupItemListener){
this.checkGroupItemListener = checkGroupItemListener;
}
//设置商品的加减监听
public void setModifyGoodsItemNumberListener(ModifyGoodsItemNumberListener modifyGoodsItemNumberListener){
this.modifyGoodsItemNumberListener = modifyGoodsItemNumberListener;
}
//是否显示删除按钮
public void showDeleteButton(boolean isEditor){
this.isEditor = isEditor;
//刷新适配器
notifyDataSetChanged();
}
@Override
public int getGroupCount() {
return data != null ? data.size() : 0;
}
@Override
public int getChildrenCount(int i) {
return data != null && data.get(i).getList() != null ? data.get(i).getList().size() : 0;
}
@Override
public Object getGroup(int groupPosition) {
return data.get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return data.get(groupPosition).getList().get(childPosition);
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getGroupView(final int groupPosition, boolean b, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = LayoutInflater.from(context).inflate(R.layout.layout_group_item,parent,false);
}
//查找控件
CheckBox ck_group_choosed = convertView.findViewById(R.id.ck_group_choosed);
//设置商家checkbox复选框的状态
if(data.get(groupPosition).isGroupChoosed()){
ck_group_choosed.setChecked(true);
}else{
ck_group_choosed.setChecked(false);
}
//ck_group_choosed.setChan
ck_group_choosed.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
checkGroupItemListener.checkGroupItem(groupPosition,((CheckBox)view).isChecked());
}
});
//赋值
ck_group_choosed.setText(data.get(groupPosition).getSellerName());
return convertView;
}
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean b, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = LayoutInflater.from(context).inflate(R.layout.layout_child_item,parent,false);
}
//商品选择
CheckBox ck_child_choosed = convertView.findViewById(R.id.ck_child_choose);
//商品图片
ImageView iv_show_pic = convertView.findViewById(R.id.iv_show_pic);
//商品主标题
TextView tv_commodity_name = convertView.findViewById(R.id.tv_commodity_name);
//商品副标题
TextView tv_commodity_attr = convertView.findViewById(R.id.tv_commodity_attr);
//商品价格
TextView tv_commodity_price = convertView.findViewById(R.id.tv_commodity_price);
//商品数量
TextView tv_commodity_num = convertView.findViewById(R.id.tv_commodity_num);
//商品减
TextView iv_sub = convertView.findViewById(R.id.iv_sub);
//商品加减中的数量变化
final TextView tv_commodity_show_num = convertView.findViewById(R.id.tv_commodity_show_num);
//商品加
TextView iv_add = convertView.findViewById(R.id.iv_add);
//删除按钮
Button btn_commodity_delete = convertView.findViewById(R.id.btn_commodity_delete);
//设置文本信息
tv_commodity_name.setText(data.get(groupPosition).getList().get(childPosition).getTitle());
tv_commodity_attr.setText(data.get(groupPosition).getList().get(childPosition).getSubhead());
tv_commodity_price.setText("¥"+data.get(groupPosition).getList().get(childPosition).getPrice());
tv_commodity_num.setText("x"+data.get(groupPosition).getList().get(childPosition).getNum());
tv_commodity_show_num.setText(data.get(groupPosition).getList().get(childPosition).getNum()+"");
//分割图片地址
String images = data.get(groupPosition).getList().get(childPosition).getImages();
String[] urls = images.split("\\|");
//加载商品图片
Glide.with(context)
.load(urls[0])
.crossFade()
.into(iv_show_pic);
//商品加
iv_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
modifyGoodsItemNumberListener.doIncrease(groupPosition,childPosition,tv_commodity_show_num);
}
});
//设置商品加减的按钮
//商品减
iv_sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
modifyGoodsItemNumberListener.doDecrease(groupPosition,childPosition,tv_commodity_show_num);
}
});
//商品复选框是否被选中
ck_child_choosed.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//isChecked false true
checkGroupItemListener.checkChildItem(groupPosition,childPosition,((CheckBox)view).isChecked());
}
});
//处理商品的选中状态
if(data.get(groupPosition).getList().get(childPosition).isChildChoosed()){
ck_child_choosed.setChecked(true);
}else{
ck_child_choosed.setChecked(false);
}
//控制删除按钮的隐藏与显示
if(isEditor){
btn_commodity_delete.setVisibility(View.VISIBLE);
}else{
btn_commodity_delete.setVisibility(View.GONE);
}
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
/**
* 商家的复选框以及商品的复选框是否被选中的接口
*/
/**
* 商家复选框以及商品复选框是否被选中接口
*/
public interface CheckGroupItemListener{
//商家的条目的复选框监听
void checkGroupItem(int groupPosition,boolean isChecked);
//商品的
void checkChildItem(int groupPosition,int childPosition,boolean isChecked);
}
/**
* 商品加减接口
*/
public interface ModifyGoodsItemNumberListener{
//商品添加操作
void doIncrease(int groupPosition,int childPosition,View view);
//商品减少操作
void doDecrease(int groupPosition,int childPosition,View view);
}
}