package com.example.app.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;
import com.example.app.R;
import com.example.app.callback.CartCallback;
import com.example.app.callback.CartUICallback;
import com.example.app.entity.CartBean;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import java.util.List;
public class CartAdapter extends XRecyclerView.Adapter<CartAdapter.MyVh> implements CartCallback {
private Context context;
private List<CartBean.Cart> carts;
//通知首页的接口
private CartUICallback cartUICallback;
/**
* 初始化首页接口 对外暴露
*/
public void setCartCallback(CartUICallback cartCallback) {
this.cartUICallback = cartCallback;
}
public CartAdapter(Context context, List<CartBean.Cart> carts) {
this.context = context;
this.carts = carts;
}
public List<CartBean.Cart> getCarts() {
return carts;
}
@NonNull
@Override
public CartAdapter.MyVh onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.activity_cart_item, viewGroup, false);
return new MyVh(view);
}
@Override
public void onBindViewHolder(@NonNull final CartAdapter.MyVh myVh, int i) {
final CartBean.Cart cart = carts.get(i);
myVh.nameTv.setText(cart.sellerName);
myVh.checkBox.setChecked(cart.isChecked);
//对每件商品的索引赋值 记录一级列表的位置索引
for (CartBean.Cart.Product product : cart.list) {
product.pos = i;
}
//二级列表
ProductAdapter productAdapter = new ProductAdapter(context, cart.list);
productAdapter.setCartCallback(this);//设置二级列表适配器会调接口
myVh.xRecyclerView.setLayoutManager(new LinearLayoutManager(context));
myVh.xRecyclerView.setAdapter(productAdapter);
myVh.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cart.isChecked = myVh.checkBox.isChecked();//设置一级对象的选中状态
//设置二级对象的选中状态
for (CartBean.Cart.Product product : cart.list) {
product.isProductisChecked = cart.isChecked;
}
//通知刷新
notifyDataSetChanged();
//选中状态改变后,通知首页价格联动
if (cartUICallback != null) {
cartUICallback.notifyCart();
}
}
});
}
@Override
public int getItemCount() {
return carts == null ? 0 : carts.size();
}
@Override
public void notifyCartItem(boolean isChecked, int position) {
//设置一级列表的选中状态
carts.get(position).isChecked = isChecked;
notifyDataSetChanged();
//选中状态后,通知主页联动价格
if (cartUICallback != null) {
cartUICallback.notifyCart();
}
}
/**
* 数量改变后,通知首页价格联动
*/
@Override
public void notifyNum() {
if (cartUICallback != null) {
cartUICallback.notifyCart();
}
}
/**
* 加载新的数据 并刷新适配器
*/
public void addData(List<CartBean.Cart> list) {
if (list != null && carts != null) {
carts.addAll(list);
notifyDataSetChanged();
}
}
public class MyVh extends RecyclerView.ViewHolder {
private final XRecyclerView xRecyclerView;
private final CheckBox checkBox;
private final TextView nameTv;
public MyVh(@NonNull View itemView) {
super(itemView);
xRecyclerView = itemView.findViewById(R.id.rv);
checkBox = itemView.findViewById(R.id.checkbox);
nameTv = itemView.findViewById(R.id.name);
}
}
}