Adater
public class MyAdater extends BaseExpandableListAdapter{ private List<ShoppCarBean.DataBean> data; private Context context; private ModifyGoodsItemNumberListener modifyGoodsItemNumberListener; private CheckGroupItemListener checkGroupItemListener; private CheckBox ck_group_choosed; private CheckBox ck_child_choosed; private ImageView iv_show_pic; private TextView tv_commodity_name; private TextView tv_commodity_attr; private TextView tv_commodity_price; private TextView tv_commodity_num; private TextView iv_sub; private TextView tv_commodity_show_num; private TextView iv_add; private Button btn_commodity_delete; public void setCheckGroupItemListener(CheckGroupItemListener checkGroupItemListener) { this.checkGroupItemListener = checkGroupItemListener; } public void setModifyGoodsItemNumberListener(ModifyGoodsItemNumberListener modifyGoodsItemNumberListener) { this.modifyGoodsItemNumberListener = modifyGoodsItemNumberListener; } public MyAdater(Context context) { this.context = context; } public void setData(List<ShoppCarBean.DataBean> data) { this.data = data; } @Override public int getGroupCount() { return data!=null?data.size():0; } @Override public int getChildrenCount(int groupPosition) { return data!=null?data.get(groupPosition).getList().size():0; } @Override public Object getGroup(int groupPosition) { return data.get(groupPosition); } @Override public Object getChild(int groupPosition, int childPosition) { return data.get(childPosition).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 isExpanded, View convertView, ViewGroup parent) { if(convertView == null){ convertView = LayoutInflater.from(context).inflate(R.layout.erji,parent,false); } ck_group_choosed = (CheckBox) convertView.findViewById(R.id.ck_group_choosed); if(data.get(groupPosition).isGroupChoosed()){ ck_group_choosed.setChecked(true); }else{ ck_group_choosed.setChecked(false); } 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 isLastChild, View convertView, ViewGroup parent) { if(convertView == null){ convertView = LayoutInflater.from(context).inflate(R.layout.zhong,parent,false); } ck_child_choosed = (CheckBox) convertView.findViewById(R.id.ck_child_choose); //商品图片 iv_show_pic = (ImageView) convertView.findViewById(R.id.iv_show_pic); //商品主标题 tv_commodity_name = (TextView) convertView.findViewById(R.id.tv_commodity_name); //商品副标题 tv_commodity_attr = (TextView) convertView.findViewById(R.id.tv_commodity_attr); //商品价格 tv_commodity_price = (TextView) convertView.findViewById(R.id.tv_commodity_price); //商品数量 tv_commodity_num = (TextView) convertView.findViewById(R.id.tv_commodity_num); //商品减 iv_sub = (TextView) convertView.findViewById(R.id.iv_sub); //商品加减中的数量变化 tv_commodity_show_num = (TextView) convertView.findViewById(R.id.tv_commodity_show_num); //商品加 iv_add = (TextView) convertView.findViewById(R.id.iv_add); //删除按钮 btn_commodity_delete = (Button) 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); } 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); } }
MainActivity
public class fragment4 extends Fragment implements IView,MyAdater.ModifyGoodsItemNumberListener,MyAdater.CheckGroupItemListener, com.example.jingdong.Me.V.IView{ private int totalNum = 0; private double totalPrice= 0.00; private List<ShoppCarBean.DataBean> data; private MyShoppingPersenter myShoppingPersenter; private View view; private ExpandableListView expandList; private CheckBox btnCheckAll; private TextView tvTotalPrice; private TextView btnAmount; private TextView btnEditor; private MyAdater adater; private MychuangjianPersenter persenter; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment4, container, false); persenter = new MychuangjianPersenter(this); myShoppingPersenter = new MyShoppingPersenter(this); initview(); Map<String,String> map= new HashMap<>(); map.put("uid","4064"); map.put("source","android"); myShoppingPersenter.getUrl("http://120.27.23.105/product/getCarts",map); return view; } private void initview() { expandList = (ExpandableListView) view.findViewById(R.id.expandList); btnCheckAll = (CheckBox) view.findViewById(R.id.btnCheckAll); tvTotalPrice = (TextView) view.findViewById(R.id.tvTotalPrice); btnAmount = (TextView) view.findViewById(R.id.btnAmount); btnEditor = (TextView) view.findViewById(R.id.btnEditor); expandList.setGroupIndicator(null); adater = new MyAdater(getActivity()); expandList.setAdapter(adater); adater.setModifyGoodsItemNumberListener(this); adater.setCheckGroupItemListener(this); btnCheckAll.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { isChoosedAll(((CheckBox)view).isChecked()); //计算商品总价 statisticsPrice(); } }); btnAmount.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Map<String,String> list=new HashMap<>(); list.put("uid","4064"); list.put("price",String.valueOf(totalPrice)); if(totalPrice!=0.00){ persenter.getUrl("https://www.zhaoapi.cn/product/createOrder",list); }else{ Toast.makeText(getActivity(),"请选择宝贝",Toast.LENGTH_SHORT).show(); } } }); } @Override public void checkGroupItem(int groupPosition, boolean isChecked) { ShoppCarBean.DataBean dataBean = data.get(groupPosition); dataBean.setGroupChoosed(isChecked); //遍历商家里面的商品,将其置为选中状态 for (ShoppCarBean.DataBean.ListBean listBean : dataBean.getList()){ listBean.setChildChoosed(isChecked); } //底部结算那个checkbox状态(全选) if(isCheckAll()){ btnCheckAll.setChecked(true); }else{ btnCheckAll.setChecked(false); } //刷新适配器 adater.notifyDataSetChanged(); //计算价格 statisticsPrice(); } @Override public void checkChildItem(int groupPosition, int childPosition, boolean isChecked) { ShoppCarBean.DataBean dataBean = data.get(groupPosition);//商家那一层 List<ShoppCarBean.DataBean.ListBean> listBeans = dataBean.getList(); ShoppCarBean.DataBean.ListBean listBean = listBeans.get(childPosition); //你点击商家的商品条目将其选中状态记录 listBean.setChildChoosed(isChecked); //检测商家里面的每一个商品是否被选中,如果被选中,返回boolean boolean result = isGoodsCheckAll(groupPosition); if(result){ dataBean.setGroupChoosed(result); }else{ dataBean.setGroupChoosed(result); } //底部结算那个checkbox状态(全选) if(isCheckAll()){ btnCheckAll.setChecked(true); }else{ btnCheckAll.setChecked(false); } //刷新适配器 adater.notifyDataSetChanged(); //计算总价 statisticsPrice(); } @Override public void doIncrease(int groupPosition, int childPosition, View view) { ShoppCarBean.DataBean.ListBean listBean = data.get(groupPosition).getList().get(childPosition); //取出当前的商品数量 int currentNum = Integer.valueOf(listBean.getNum()); //商品++ currentNum++; //将商品数量设置javabean上 listBean.setNum(String.valueOf(currentNum)); //刷新适配器 adater.notifyDataSetChanged(); //计算商品价格 statisticsPrice(); } @Override public void doDecrease(int groupPosition, int childPosition, View view) { ShoppCarBean.DataBean.ListBean listBean = data.get(groupPosition).getList().get(childPosition); //取出当前的商品数量 int currentNum = Integer.valueOf(listBean.getNum()); //直接结束这个方法 if(currentNum == 1){ return; } currentNum--; listBean.setNum(String.valueOf(currentNum)); //刷新适配器 adater.notifyDataSetChanged(); //计算商品价格 statisticsPrice(); } @Override public void chenggong(ShoppCarBean shoppCarBean) { data = shoppCarBean.getData(); adater.setData(data); adater.notifyDataSetChanged(); defaultExpand(); } private void defaultExpand() { for (int i = 0; i < adater.getGroupCount();++i){ expandList.expandGroup(i); } } @Override public void shibai(ShoppCarBean shoppCarBean) { } private boolean isGoodsCheckAll(int groupPosition){ List<ShoppCarBean.DataBean.ListBean> listBeans = this.data.get(groupPosition).getList(); //遍历某一个商家的每个商品是否被选中 for (ShoppCarBean.DataBean.ListBean listBean : listBeans){ if(listBean.isChildChoosed()){//是选中状态 continue; }else{ return false; } } return true; } private boolean isCheckAll(){ for (ShoppCarBean.DataBean dataBean : data){ if(!dataBean.isGroupChoosed()){ return false; } } return true; } private void isChoosedAll(boolean isChecked){ for (ShoppCarBean.DataBean dataBean : data){ dataBean.setGroupChoosed(isChecked); for (ShoppCarBean.DataBean.ListBean listBean : dataBean.getList()){ listBean.setChildChoosed(isChecked); } } //刷新适配器 adater.notifyDataSetChanged(); } private void statisticsPrice(){ //初始化值 totalNum = 0; totalPrice = 0.00; for (ShoppCarBean.DataBean dataBean : data){ for (ShoppCarBean.DataBean.ListBean listBean : dataBean.getList()){ if(listBean.isChildChoosed()){ totalNum++; System.out.println("number : "+totalNum); totalPrice += Integer.valueOf(listBean.getNum())*Double.valueOf(listBean.getPrice()); } } } //设置文本信息 合计、结算的商品数量 tvTotalPrice.setText("合计:¥"+totalPrice); btnAmount.setText("结算("+totalNum+")"); } @Override public void chenggong(ChuangjianBean chuangjianBean) { Toast.makeText(getActivity(),chuangjianBean.getMsg(),Toast.LENGTH_SHORT).show(); Intent intent=new Intent(getActivity(), DingdanActivity.class); startActivity(intent); } @Override public void shibai(ChuangjianBean chuangjianBean) { } }