CartssHIPEIQI

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

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值