定义一个接口
public interface CartCallback {
void notifyCartItem(boolean isChecked,int position);
void notifynum();
}
在定义一个接口
public interface CartUICallback {
void notifyCart();
}
二级适配器
public class CartsAdapter extends RecyclerView.Adapter<CartsAdapter.ViewHolder> {
private Context context;
private List<CartBean.DataBean.ListBean> cartsdata;
private CartCallback cartCallback;
public void setCartCallback(CartCallback cartCallback) {
this.cartCallback = cartCallback;
}
public CartsAdapter(Context context, List<CartBean.DataBean.ListBean> cartsdata) {
this.context = context;
this.cartsdata = cartsdata;
}
@NonNull
@Override
public CartsAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view=LayoutInflater.from(context).inflate(R.layout.cart_item1_layout,viewGroup,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull final CartsAdapter.ViewHolder viewHolder, final int i) {
viewHolder.shouhuo2_img.setImageURI(cartsdata.get(i).getImages());
viewHolder.shouhuo2_title.setText(cartsdata.get(i).getTitle());
viewHolder.shouhuo2_price.setText(cartsdata.get(i).getBargainPrice()+"");
viewHolder.checkbox_item1.setChecked(cartsdata.get(i).isProductCheckbox);
//商品复选框
viewHolder.checkbox_item1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
for (CartBean.DataBean.ListBean cartsdatum : cartsdata) {
cartsdata.get(i).isProductCheckbox=viewHolder.checkbox_item1.isChecked();
if (!cartsdatum.isProductCheckbox){
cartCallback.notifyCartItem(false,cartsdata.get(i).pos);
return;
}
cartCallback.notifyCartItem(true,cartsdata.get(i).pos);
if (cartCallback!=null){
cartCallback.notifynum();
}
}
}
});
}
@Override
public int getItemCount() {
return cartsdata.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private final CheckBox checkbox_item1;
private final TextView shouhuo2_title;
private final TextView shouhuo2_price;
private final SimpleDraweeView shouhuo2_img;
public ViewHolder(@NonNull View itemView) {
super(itemView);
checkbox_item1 = itemView.findViewById(R.id.checkbox_item1);
shouhuo2_title = itemView.findViewById(R.id.shouhuo2_title);
shouhuo2_price = itemView.findViewById(R.id.shouhuo2_price);
shouhuo2_img = itemView.findViewById(R.id.shouhuo2_img);
}
}
}
一级适配器
public class CartAdapter extends RecyclerView.Adapter<CartAdapter.ViewHolder> implements CartCallback {
private Context context;
private List<CartBean.DataBean> cartdata;
private CartsAdapter cartsAdapter;
private CartUICallback cartUICallback;
public void setCartUICallback(CartUICallback cartUICallback) {
this.cartUICallback = cartUICallback;
}
public CartAdapter(Context context, List<CartBean.DataBean> cartdata) {
this.context = context;
this.cartdata = cartdata;
notifyDataSetChanged();
}
@NonNull
@Override
public CartAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view=LayoutInflater.from(context).inflate(R.layout.cart_item_layout,viewGroup,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull final CartAdapter.ViewHolder viewHolder, final int i) {
viewHolder.sj.setText(cartdata.get(i).getSellerName());
viewHolder.rv.setLayoutManager(new LinearLayoutManager(context));
cartsAdapter = new CartsAdapter(context, cartdata.get(i).getList());
viewHolder.rv.setAdapter(cartsAdapter);
cartsAdapter.setCartCallback(this);
viewHolder.checkbox_item.setChecked(cartdata.get(i).isCheckbox);
if (cartdata.get(i).isCheckbox){
viewHolder.checkbox_item.setChecked(true);
}else{
viewHolder.checkbox_item.setChecked(false);
}
for (CartBean.DataBean.ListBean listBean : cartdata.get(i).getList()) {
listBean.pos=i;
}
//选中商家的单选框
viewHolder.checkbox_item.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
cartdata.get(i).setCheckbox(viewHolder.checkbox_item.isChecked());
//便利商品的集合,商品选中商家选中
for (CartBean.DataBean.ListBean listBean : cartdata.get(i).getList()) {
listBean.isProductCheckbox=cartdata.get(i).isCheckbox;
}
//调用总价
if(cartUICallback!=null){
cartUICallback.notifyCart();
}
}
});
//全选全不选
viewHolder.checkbox_item.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
for (int j = 0; j < cartdata.get(i).getList().size(); j++) {
cartdata.get(i).getList().get(j).setProductCheckbox(isChecked);
}
cartsAdapter.notifyDataSetChanged();
}
});
}
@Override
public int getItemCount() {
return cartdata.size();
}
//继承cartcallback接口生成
@Override
public void notifyCartItem(boolean isChecked, int position) {
if(cartUICallback!=null){
cartUICallback.notifyCart();
}
}
//继承cartcallback接口生成
@Override
public void notifynum() {
if (cartUICallback!=null){
cartUICallback.notifyCart();
}
}
public class ViewHolder extends RecyclerView.ViewHolder {
private final TextView sj;
private final CheckBox checkbox_item;
private final RecyclerView rv;
public ViewHolder(@NonNull View itemView) {
super(itemView);
sj = itemView.findViewById(R.id.sj);
checkbox_item = itemView.findViewById(R.id.checkbox_item);
rv = itemView.findViewById(R.id.rv);
}
}
}
主页面
public class FragmentCart extends Fragment implements DataView,CartUICallback {
@BindView(R.id.cart_rv)
RecyclerView cartRv;
@BindView(R.id.checkbox)
CheckBox checkbox;
@BindView(R.id.js)
Button js;
Unbinder unbinder;
private ShowPresenter showPresenter;
private CartAdapter cartAdapter;
private CartBean cartBean;
private List<CartBean.DataBean> data1;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragmentcart, container, false);
//ButterKnife
unbinder = ButterKnife.bind(this, view);
initData();
return view;
}
private void initData() {
showPresenter = new ShowPresenter(this);
HashMap<String, String> map = new HashMap<>();
map.put("uid","51");
showPresenter.getData(Api.CART,map,2);
showPresenter.attchView(this);
}
@Override
public void success(T result) {
if (result instanceof CartBean){
cartBean = (CartBean) result;
cartRv.setLayoutManager(new LinearLayoutManager(getActivity()));
Log.e("xqqq", cartBean.getMsg()+"");
cartAdapter = new CartAdapter(getActivity(), cartBean.getData());
cartRv.setAdapter(cartAdapter);
cartAdapter.setCartUICallback(this);
//全选全不选
checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
for (CartBean.DataBean dataBean : cartBean.getData()) {
dataBean.setCheckbox(true);
for(CartBean.DataBean.ListBean listBean : dataBean.getList()){
listBean.setProductCheckbox(true);//二级列表不选中
}
}
}else{
for (CartBean.DataBean dataBean : cartBean.getData()) {
dataBean.setCheckbox(false);
for(CartBean.DataBean.ListBean listBean : dataBean.getList()){
listBean.setProductCheckbox(false);//二级列表选中
}
}
}
cartAdapter.notifyDataSetChanged();
jiaqian();
}
});
}
}
//计算总价
private void jiaqian() {
double totalprice=0;
for (CartBean.DataBean dataBean : cartBean.getData()) {
for (CartBean.DataBean.ListBean listBean : dataBean.getList()) {
if (listBean.isProductCheckbox){
totalprice+=listBean.getPrice();
}
}
}
checkbox.setText("¥:"+totalprice);
}
@Override
public void failure(T error) {
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
showPresenter.detachView();
}
/**
* 总价接口
*/
@Override
public void notifyCart() {
jiaqian();
}
}