public class MyExpandAdapter extends BaseExpandableListAdapter implements View.OnClickListener { private ResultBean resultBean; private Context context; private UpdateView updateViewListener; public MyExpandAdapter(Context context) { this.context = context; } //设置数据 public void setData(ResultBean rBean){ this.resultBean=rBean; } @Override public int getGroupCount() { return resultBean.getData().size(); } @Override public int getChildrenCount(int groupPosition) { return resultBean.getData().get(groupPosition).getList().size(); } @Override public Object getGroup(int groupPosition) { return resultBean.getData().get(groupPosition); } @Override public Object getChild(int groupPosition, int childPosition) { return resultBean.getData().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(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { GroupViewHolder groupViewHolder; if(convertView==null){ convertView= LayoutInflater.from(context).inflate(R.layout.groupview,parent,false); groupViewHolder=new GroupViewHolder(convertView); convertView.setTag(groupViewHolder); }else{ groupViewHolder= (GroupViewHolder) convertView.getTag(); } groupViewHolder.group_name.setText(resultBean.getData().get(groupPosition).getSellerName()); //设置tag groupViewHolder.cb_group.setTag(groupPosition); //设置group复选框的点击事件 groupViewHolder.cb_group.setOnClickListener(this); //根据获取到的复选框状态设置是否被选中 if(resultBean.getData().get(groupPosition).getGroupSelect()){ if(!groupViewHolder.cb_group.isChecked()){ groupViewHolder.cb_group.setChecked(true); } }else{ groupViewHolder.cb_group.setChecked(false); } 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=LayoutInflater.from(context).inflate(R.layout.childview,parent,false); childViewHolder=new ChildViewHolder(convertView); convertView.setTag(childViewHolder); }else{ childViewHolder= (ChildViewHolder) convertView.getTag(); } //设置child的tag String tag = groupPosition + "," + childPosition; childViewHolder.cb_child.setTag(tag); childViewHolder.child_rublish.setTag(tag); //设置child复选框的点击事件 childViewHolder.child_rublish.setOnClickListener(this); childViewHolder.cb_child.setOnClickListener(this); childViewHolder.customChangeNumView.setEditText(resultBean.getData().get(groupPosition).getList().get(childPosition).getNum()); //加减监听 childViewHolder.customChangeNumView.setCustomListener(new CustomChangeNumView.CustomListener() { @Override public void jiajian(int count) { resultBean.getData().get(groupPosition).getList().get(childPosition).setNum(count); notifyDataSetChanged(); sumList(resultBean); } }); //根据获取的状态设置是否选中 if(resultBean.getData().get(groupPosition).getList().get(childPosition).getChildSelect()){ childViewHolder.cb_child.setChecked(true); }else{ childViewHolder.cb_child.setChecked(false); } // childViewHolder.child_img.setTag(tag); if(resultBean.getData().get(groupPosition).getList().get(childPosition).getImages().split("\\|").length>0) { Glide.with(context).load(resultBean.getData().get(groupPosition).getList().get(childPosition).getImages().split("\\|")[0]).into(childViewHolder.child_img); }else{ Glide.with(context).load(resultBean.getData().get(groupPosition).getList().get(childPosition).getImages()).into(childViewHolder.child_img); } childViewHolder.child_title.setText(resultBean.getData().get(groupPosition).getList().get(childPosition).getTitle()+""); childViewHolder.child_price.setText(resultBean.getData().get(groupPosition).getList().get(childPosition).getPrice()+""); return convertView; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } //的viewholder class GroupViewHolder{ SmoothCheckBox cb_group; TextView group_name; public GroupViewHolder(View itemView) { cb_group=itemView.findViewById(R.id.cb_group); group_name=itemView.findViewById(R.id.group_name); } } //child的viewholdergroup class ChildViewHolder{ SmoothCheckBox cb_child; ImageView child_img; ImageView child_rublish; TextView child_title; TextView child_price; CustomChangeNumView customChangeNumView; public ChildViewHolder(View itemView) { cb_child=itemView.findViewById(R.id.cb_child); child_img=itemView.findViewById(R.id.child_img); child_title=itemView.findViewById(R.id.child_title); child_price=itemView.findViewById(R.id.child_price); child_rublish=itemView.findViewById(R.id.child_rublish); customChangeNumView=itemView.findViewById(R.id.custom); } } //点击事件 @Override public void onClick(View v) { SmoothCheckBox checkBox; String tag = v.getTag().toString(); String[] split; int groupId = 0; int childId = 0; int childSize = 0; int groupPosition = 0; if(tag.contains(",")){ split = tag.split(","); groupId=Integer.valueOf(split[0]); childId=Integer.valueOf(split[1]); }else{ groupPosition=Integer.valueOf(tag); childSize=resultBean.getData().get(groupPosition).getList().size(); } switch (v.getId()){ //组的复选框点击 case R.id.cb_group: checkBox= (SmoothCheckBox) v; resultBean.getData().get(groupPosition).setGroupSelect(!checkBox.isChecked()); if(!checkBox.isChecked()){ for (int i=0;i<childSize;i++){ if(!resultBean.getData().get(groupPosition).getList().get(i).getChildSelect()){ resultBean.getData().get(groupPosition).getList().get(i).setChildSelect(!checkBox.isChecked()); } } }else{ for (int i=0;i<childSize;i++){ resultBean.getData().get(groupPosition).getList().get(i).setChildSelect(!checkBox.isChecked()); } } int fCount=0; for (int i=0;i<resultBean.getData().size();i++){ if(resultBean.getData().get(i).getGroupSelect()){ fCount++; } } if(fCount==resultBean.getData().size()){ resultBean.setAllSelect(true); }else{ resultBean.setAllSelect(false); } sumList(resultBean); notifyDataSetChanged(); break; case R.id.cb_child: checkBox= (SmoothCheckBox) v; int cCount=0; int gCount=0; resultBean.getData().get(groupId).getList().get(childId).setChildSelect(!checkBox.isChecked()); for (int i=0;i<resultBean.getData().get(groupId).getList().size();i++){ if(resultBean.getData().get(groupId).getList().get(i).getChildSelect()){ cCount++; } } if(cCount==resultBean.getData().get(groupId).getList().size()){ resultBean.getData().get(groupId).setGroupSelect(true); }else{ resultBean.getData().get(groupId).setGroupSelect(false); } for (int i=0;i<resultBean.getData().size();i++){ if(resultBean.getData().get(i).getGroupSelect()){ gCount++; } } if(gCount==resultBean.getData().size()){ resultBean.setAllSelect(true); }else{ resultBean.setAllSelect(false); } sumList(resultBean); notifyDataSetChanged(); break; case R.id.child_rublish: resultBean.getData().get(groupId).getList().remove(childId); if(resultBean.getData().get(groupId).getList().size()==0){ resultBean.getData().remove(groupId); } sumList(resultBean); notifyDataSetChanged(); break; } } //设置updateviewlistener public void setUpdateViewListener(UpdateView Listener){ if(updateViewListener==null){ this.updateViewListener=Listener; } } //计算总价的 public void sumList(ResultBean resultBean){ int allCount=0; float allMoney=0; for (int i=0;i<resultBean.getData().size();i++){ for(int j=0;j<resultBean.getData().get(i).getList().size();j++){ if(resultBean.getData().get(i).getList().get(j).getChildSelect()){ allCount+=resultBean.getData().get(i).getList().get(j).getNum(); allMoney+=resultBean.getData().get(i).getList().get(j).getNum()*resultBean.getData().get(i).getList().get(j).getPrice(); } } } resultBean.setAllCount(allCount); resultBean.setAllMoney(allMoney); updateViewListener.update(resultBean.getAllSelect(),allCount,allMoney); } //全选 public void selectAll(boolean checked){ resultBean.setAllSelect(checked); for (int i=0;i<resultBean.getData().size();i++){ resultBean.getData().get(i).setGroupSelect(checked); for (int j=0;j<resultBean.getData().get(i).getList().size();j++){ resultBean.getData().get(i).getList().get(j).setChildSelect(checked); } } notifyDataSetChanged(); sumList(resultBean); }
二级列表购物车Adapter
猜你喜欢
转载自blog.csdn.net/owen_bland/article/details/80186075
今日推荐
周排行