一级适配器
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>