MyAdapters适配器

public class MyAdapter extends BaseExpandableListAdapter {
private List<News.DataBean> mList;
private ParentHolder holder;

public MyAdapter(List<News.DataBean> list) {
    mList = list;
}

@Override
public int getGroupCount() {
    return mList == null? 0 : mList.size();
}

@Override
public int getChildrenCount(int groupPosition) {
    return mList.get(groupPosition).getList() ==null?
    0:mList.get(groupPosition).getList().size();
}


@Override  //组的布局
public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
    News.DataBean dataBean = mList.get(groupPosition);
    ParentHolder parent1;
    if (convertView == null) {
        convertView = View.inflate(parent.getContext(), R.layout.item_cart_parent, null);
        parent1 = new ParentHolder(convertView);
        convertView.setTag(parent1);
    }else {
        parent1 = (ParentHolder) convertView.getTag();
    }
    parent1.seller_name_tv.setText(dataBean.getSellerName());
    boolean selected = isSelected(groupPosition);
    parent1.seller_cb.setChecked(selected);

    parent1.seller_cb.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mOnCKChangeListener.onGroupCheckedChange(groupPosition);
        }
    });

    return convertView;
}


@Override  //子条目的布局
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
    //子条目所有的数据
    News.DataBean bean = mList.get(groupPosition);
    List<News.DataBean.ListBean> list = bean.getList();

    //拿到List集合里具体商品
    News.DataBean.ListBean listBean = list.get(childPosition);

    ChildViewHolder childViewHolder;

    if (convertView == null) {
        convertView = View.inflate(parent.getContext(), R.layout.item_cart_child, null);
        childViewHolder = new ChildViewHolder(convertView);
        convertView.setTag(childViewHolder);
    } else {
        childViewHolder=(ChildViewHolder)convertView.getTag();
    }
    //设置图片
    String images = bean.getList().get(childPosition).getImages();
    String[] split = images.split("!");
    ImageLoader.getInstance().displayImage(split[0],childViewHolder.product_icon_iv);
    //设置商品名字
    childViewHolder.product_title_name_tv.setText(listBean.getTitle());
    //设置商品单价
    childViewHolder.product_price_tv.setText(listBean.getPrice()+"");
    //设置复选框是否选中
    childViewHolder.child_cb.setChecked(listBean.getSelected() == 1);

    //设置组合式自定义控件内部的数量
    childViewHolder.add_remove_view.setNumber(listBean.getNum());

    //设置商品CheckBox的点击事件,通过接口回调,暴露给外面
    childViewHolder.child_cb.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mOnCKChangeListener !=null ){
                mOnCKChangeListener.onChilderCheckedChange(groupPosition,childPosition);
            }
        }
    });
    childViewHolder.add_remove_view.setOnNumberChangeListener(new MyAddSubView.OnNumberChangeListener() {
        @Override
        public void onNumberChange(int num) {
            if (mOnCKChangeListener!=null){
                mOnCKChangeListener.onNumberChange(groupPosition,childPosition,num);
            }
        }
    });
    return convertView;
}

///创建ViewHolder//
//创建组的ViewHodler
public static class ParentHolder{
    public CheckBox seller_cb;
    public TextView seller_name_tv;

    public ParentHolder(View rootView){
        this.seller_cb = rootView.findViewById(R.id.seller_cb);
        this.seller_name_tv = rootView.findViewById(R.id.seller_name_tv);
    }
}
//创建子条目的ViewHolder
public static class ChildViewHolder {
    public CheckBox child_cb;
    public ImageView product_icon_iv;
    public TextView product_title_name_tv;
    public TextView product_price_tv;
    public MyAddSubView add_remove_view;

    public ChildViewHolder(View rootView) {
        this.child_cb = rootView.findViewById(R.id.child_cb);
        this.product_icon_iv =  rootView.findViewById(R.id.product_icon_iv);
        this.product_title_name_tv =rootView.findViewById(R.id.product_title_name_tv);
        this.product_price_tv = rootView.findViewById(R.id.product_price_tv);
        this.add_remove_view = rootView.findViewById(R.id.add_remove_view);
    }
}

不用在意的方法
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
    return false;
}

@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;
}

/购物车特有的方法///
//判断当前商家所有商品是否被选中(一种是所有的都被选中,一种是没有所有的都选中)
public boolean isSelected(int groupPosition){
//拿到对应组的数据
News.DataBean dataBean = mList.get(groupPosition);
//拿到商家的所有商品数据
List<News.DataBean.ListBean> list = dataBean.getList();
for (News.DataBean.ListBean listBean: list){
if (listBean.getSelected() == 0){
return false;
}
}
return true;
}
//底部全选逻辑
public boolean isAllSelected(){
for (int x =0;x<mList.size();x++){
News.DataBean dataBean = mList.get(x);
List<News.DataBean.ListBean> list = dataBean.getList();
for (int j = 0;j<list.size();j++){
if (list.get(j).getSelected() == 0){
return false;
}
}
}
return true;
}
//计算商品总数量
public int onZNumber(){
int toTaNumber = 0;
for (int i = 0;i<mList.size();i++){
News.DataBean dataBean = mList.get(i);
List<News.DataBean.ListBean> list = dataBean.getList();
for(int j = 0;j<list.size();j++){
if (list.get(j).getSelected() == 1){
int num = list.get(j).getNum();
toTaNumber+=num;
}

        }

    }
    return toTaNumber;
}
//计算总价格
public Double onZPrice(){
    double toTaPrice = 0;
    for (int n = 0;n<mList.size();n++){
        News.DataBean dataBean = mList.get(n);
        List<News.DataBean.ListBean> list = dataBean.getList();
        for (int m = 0;m<list.size();m++){
            News.DataBean.ListBean listBean = list.get(m);
            if (listBean.getSelected() == 1){
                double price = listBean.getPrice();
                toTaPrice+=price;
            }


        }
    }
    return toTaPrice;
}
//商品组的全选框点击时 ==全选
public void groupCheckBoxChecked(int groupPosition,boolean isSelected){
    News.DataBean dataBean = mList.get(groupPosition);
    List<News.DataBean.ListBean> list = dataBean.getList();
    for (int x = 0;x<list.size();x++){
        News.DataBean.ListBean listBean = list.get(x);
       listBean.setSelected(isSelected ? 1 : 0);
    }

}
//当商家的子条目全选中时更新全选框的状态
public void ChilderCheckBoxChecked(int groupPosition,int childPosition){
    News.DataBean dataBean = mList.get(groupPosition);
    List<News.DataBean.ListBean> list = dataBean.getList();
    News.DataBean.ListBean listBean = list.get(childPosition);
    listBean.setSelected(listBean.getSelected()==0?1:0);
}
//但底部的全选矿被选中时
public void buttonCheckBoxChecked(boolean selected){
  for (int x = 0;x<mList.size();x++){
      News.DataBean dataBean = mList.get(x);
      List<News.DataBean.ListBean> list = dataBean.getList();
      for (int j = 0;j<list.size();j++){
          list.get(j).setSelected(selected?1:0);
      }
  }
}
//当加减器被点击时,改变里面当前商品的数量
public void onChangeNumber(int groupPosion,int childPositon,int number){
    News.DataBean dataBean = mList.get(groupPosion);
    List<News.DataBean.ListBean> list = dataBean.getList();
    News.DataBean.ListBean listBean = list.get(childPositon);
    listBean.setNum(number);
}

//接口的固定格式///
public interface onCKChangeListener{
    /*
    当商家的CheckBox被点击时回调
     */
   void onGroupCheckedChange(int groupPosition);
    /*
     当商家的子条目商品被点击时回调
     */
    void onChilderCheckedChange(int groupPosition,int childPosition);
    /*
       当点击加减按钮时回调
     */
    void onNumberChange(int groupPosition,int childPosition,int number);
}
     onCKChangeListener mOnCKChangeListener;
public void setOnCKChangeListener(onCKChangeListener onCKChangeListener){
    mOnCKChangeListener = onCKChangeListener;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值