适配器

一级适配器
public class CarAdapter extends XRecyclerView.Adapter<CarAdapter.CarViewHolder> implements Carcheck {

private Context context;
private List<CarBean.Data> data;
private MNotifyNum mNotifyNum;

public CarAdapter(Context context, List<CarBean.Data> data) {
    this.context = context;
    this.data = data;
}

public void setmNotifyNum(MNotifyNum mNotifyNum) {
    this.mNotifyNum = mNotifyNum;
}

@NonNull
@Override
public CarViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view=LayoutInflater.from(context).inflate(R.layout.car_layout,viewGroup,false);
    CarViewHolder carViewHolder=new CarViewHolder(view);
    return carViewHolder;
}

@Override
public void onBindViewHolder(@NonNull final CarViewHolder carViewHolder, final int i) {
       //获取下标pos
    for (CarBean.Data.Product product : data.get(i).list) {
        product.pos=i;
    }

        carViewHolder.checkBox.setChecked(data.get(i).isChecked);
        carViewHolder.name.setText(data.get(i).sellerName);
        //创建自二级列表
       ProductAdapter productAdapter = new ProductAdapter(context,data.get(i).list);
       productAdapter.setCarcheck(this);
       carViewHolder.rv.setLayoutManager(new LinearLayoutManager(context));
       carViewHolder.rv.setAdapter(productAdapter);
       carViewHolder.checkBox.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               data.get(i).isChecked=carViewHolder.checkBox.isChecked();
               //遍历二级列表
               for (CarBean.Data.Product product : data.get(i).list) {
                   product.isProductChecked=data.get(i).isChecked;
               }
               notifyDataSetChanged();
               if (mNotifyNum!=null){
                   mNotifyNum.notifynum();
               }
           }
       });
}

@Override
public int getItemCount() {
    return data.size();
}

@Override
public void notifCheckBox(boolean isCheckBox, int postion) {
    data.get(postion).isChecked=isCheckBox;
    notifyDataSetChanged();
}

@Override
public void notifly() {
    if (mNotifyNum!=null){
        mNotifyNum.notifynum();
    }
}

class CarViewHolder extends RecyclerView.ViewHolder {
      private  TextView name;
      private CheckBox checkBox;
      private XRecyclerView rv;
    public CarViewHolder(@NonNull View itemView) {
        super(itemView);

       name= itemView.findViewById(R.id.name);
       checkBox=itemView.findViewById(R.id.checkbox);
       rv=itemView.findViewById(R.id.rv);
    }
}

}
二级适配器
public class ProductAdapter extends XRecyclerView.Adapter<ProductAdapter.ProViewHolder> {

private Context context;
private List<CarBean.Data.Product> list;
private Carcheck carcheck;

public ProductAdapter(Context context, List<CarBean.Data.Product> list) {
    this.context = context;
    this.list = list;
}

public void setCarcheck(Carcheck carcheck) {
    this.carcheck = carcheck;
}

@NonNull
@Override
public ProViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view=LayoutInflater.from(context).inflate(R.layout.item_car,viewGroup,false);
    ProViewHolder proViewHolder=new ProViewHolder(view);
    return proViewHolder;
}

@Override
public void onBindViewHolder(@NonNull final ProViewHolder proViewHolder, final int i) {
    proViewHolder.title.setText(list.get(i).title);
    proViewHolder.price.setText("¥:"+list.get(i).price);
    proViewHolder.checkBox.setChecked(list.get(i).isProductChecked);
    String[] images=list.get(i).images.split("\\|");
    if (images!=null&&images.length>0){
        Glide.with(context).load(images[0]).into(proViewHolder.imageView);
    }
    proViewHolder.checkBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            list.get(i).isProductChecked=proViewHolder.checkBox.isChecked();
            carcheck.notifly();
            //遍历二级列表
            for (CarBean.Data.Product product : list) {
                if(!product.isProductChecked){
                    if (carcheck!=null){
                        carcheck.notifCheckBox(false,list.get(i).pos);
                    }
                    return;
                }
                carcheck.notifCheckBox(true,list.get(i).pos);
            }
        }
    });
    //view加减
    proViewHolder.addView.setAddView(new AddView.AddCallBack() {
        @Override
        public void numCallback(int num) {
            list.get(i).shopnum=num;
            carcheck.notifly();
        }
    });
}

@Override
public int getItemCount() {
    return list.size();
}

class ProViewHolder extends RecyclerView.ViewHolder {
    private TextView title,price;
    private ImageView imageView;
    private AddView addView;
    private CheckBox checkBox;
    public ProViewHolder(@NonNull View itemView) {
        super(itemView);
        title=itemView.findViewById(R.id.title);
        price=itemView.findViewById(R.id.price);
        imageView=itemView.findViewById(R.id.image);
        addView=itemView.findViewById(R.id.addview);
        checkBox=itemView.findViewById(R.id.checkbox);
    }
}

}
一级Xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:cardElevation="5dp"
    app:cardCornerRadius="10dp"
    android:background="#fff"
    app:contentPadding="10dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <CheckBox
                android:id="@+id/checkbox"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
            <TextView
                android:id="@+id/name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
               android:text="商品名称" />
        </LinearLayout>
        <com.jcodecraeer.xrecyclerview.XRecyclerView
            android:id="@+id/rv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    </LinearLayout>

</android.support.v7.widget.CardView>

二级xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <CheckBox
                android:id="@+id/checkbox"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
            <ImageView
                android:id="@+id/image"
                android:layout_width="80dp"
                android:layout_height="80dp"
                android:background="@mipmap/ic_launcher"
                android:layout_gravity="center"/>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical">
                <TextView
                    android:layout_width="230dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="5dp"
                    android:id="@+id/title"
                    android:layout_margin="10dp"
                    android:text="商品标题"
                    android:lines="2"
                    android:ellipsize="end"/>

                <TextView
                    android:id="@+id/price"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="价格"
                    android:textColor="#f00"/>

            </LinearLayout>
        </LinearLayout>
        <com.example.shopcar.view.AddView
            android:id="@+id/addview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"/>

    </RelativeLayout>

</LinearLayout>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值