package com.atguigu.shoppingmall.shoppingcart.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import com.atguigu.shoppingmall.R;
import com.atguigu.shoppingmall.home.bean.GoodsBean;
import com.atguigu.shoppingmall.shoppingcart.view.NumberAddSubView;
import com.atguigu.shoppingmall.shoppingcart.utils.CartProvider;
import com.atguigu.shoppingmall.utils.Constants;
import com.bumptech.glide.Glide;
import java.util.Iterator;
import java.util.List;
/**
* 购物车适配器
*/
public class ShopCartAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private CartProvider cartProvider;
private Context mContext;
private List<GoodsBean> datas;
private TextView tvShopcartTotal;
private CheckBox checkboxAll;
private CheckBox cb_all;
public ShopCartAdapter(Context context, final List<GoodsBean> datas, TextView tvShopcartTotal, CartProvider cartProvider, CheckBox checkboxAll, CheckBox cb_all) {
this.mContext = context;
this.datas = datas;
this.tvShopcartTotal = tvShopcartTotal;
this.cartProvider = cartProvider;
this.checkboxAll = checkboxAll;
this.cb_all = cb_all;
//首次加载数据
showTotalPrice();
checkboxAll.setChecked(true);
for (int i = 0; i < datas.size(); i++) {
datas.get(i).setIsChildSelected(true);
}
showTotalPrice();
setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClickListener(View view, int position) {
GoodsBean goodsBean = datas.get(position);
goodsBean.setIsChildSelected(!goodsBean.isChildSelected());
notifyItemChanged(position);
checkAll();
showTotalPrice();
}
});
//设置全选点击事件
checkboxAll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean checked = getCheckboxAll().isChecked();
checkAll_none(checked);
showTotalPrice();
}
});
cb_all.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean checked = getCb_all().isChecked();
checkAll_none(checked);
showTotalPrice();
}
});
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(View.inflate(mContext, R.layout.item_shop_cart, null));
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
ViewHolder viewHolder = (ViewHolder) holder;
viewHolder.setData(datas.get(position));
}
@Override
public int getItemCount() {
return datas.size();
}
public void checkAll_none(boolean checked) {
if (datas != null && datas.size() > 0) {
for (int i = 0; i < datas.size(); i++) {
datas.get(i).setIsChildSelected(checked);
checkboxAll.setChecked(checked);
notifyItemChanged(i);
}
} else {
checkboxAll.setChecked(false);
}
}
public void deleteData() {
if (datas != null && datas.size() > 0) {
for (Iterator iterator = datas.iterator(); iterator.hasNext(); ) {
GoodsBean cart = (GoodsBean) iterator.next();
if (cart.isChildSelected()) {
//这行代码放在前面
int position = datas.indexOf(cart);
//1.删除本地缓存的
cartProvider.deleteData(cart);
//2.删除当前内存的
iterator.remove();
//3.刷新数据
notifyItemRemoved(position);
}
}
}
}
public void checkAll() {
if (datas != null && datas.size() > 0) {
for (int i = 0; i < datas.size(); i++) {
if (!datas.get(i).isChildSelected()) {
checkboxAll.setChecked(false);
cb_all.setChecked(false);
return;
} else {
checkboxAll.setChecked(true);
cb_all.setChecked(true);
}
}
}
}
class ViewHolder extends RecyclerView.ViewHolder {
private CheckBox cbGov;
private ImageView ivGov;
private TextView tvDescGov;
private TextView tvPriceGov;
private NumberAddSubView numberAddSubView;
ViewHolder(View itemView) {
super(itemView);
cbGov = (CheckBox) itemView.findViewById(R.id.cb_gov);
ivGov = (ImageView) itemView.findViewById(R.id.iv_gov);
tvDescGov = (TextView) itemView.findViewById(R.id.tv_desc_gov);
tvPriceGov = (TextView) itemView.findViewById(R.id.tv_price_gov);
numberAddSubView = (NumberAddSubView) itemView.findViewById(R.id.numberAddSubView);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onItemClickListener != null) {
onItemClickListener.onItemClickListener(v, getLayoutPosition());
}
}
});
}
public void setData(final GoodsBean goodsBean) {
cbGov.setChecked(goodsBean.isChildSelected());
Glide.with(mContext)
.load(Constants.BASE_URl_IMAGE + goodsBean.getFigure())
.into(ivGov);
tvDescGov.setText(goodsBean.getName());
tvPriceGov.setText("¥" + goodsBean.getCover_price());
//设置数字加减回调
numberAddSubView.setValue(goodsBean.getNumber());
//-------------------------------------------
//cartProvider = new CartProvider(mContext);
numberAddSubView.setOnNumberChangeListener(new NumberAddSubView.OnNumberChangeListener() {
@Override
public void addNumber(View view, int value) {
goodsBean.setNumber(value);
cartProvider.updataData(goodsBean);
showTotalPrice();
}
@Override
public void subNumner(View view, int value) {
goodsBean.setNumber(value);
cartProvider.updataData(goodsBean);
showTotalPrice();
}
});
}
}
public void showTotalPrice() {
tvShopcartTotal.setText(getTotalPrice() + "");
}
private double getTotalPrice() {
double total = 0;
if (datas != null && datas.size() > 0) {
for (int i = 0; i < datas.size(); i++) {
GoodsBean goodsBean = datas.get(i);
if (goodsBean.isChildSelected())
total += Double.parseDouble(goodsBean.getCover_price()) * Double.parseDouble(goodsBean.getNumber() + "");
}
}
return total;
}
//回调点击事件的监听
private OnItemClickListener onItemClickListener;
interface OnItemClickListener {
void onItemClickListener(View view, int position);
}
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
public CheckBox getCb_all() {
return cb_all;
}
public void setCb_all(CheckBox cb_all) {
this.cb_all = cb_all;
}
public CheckBox getCheckboxAll() {
return checkboxAll;
}
public void setCheckboxAll(CheckBox checkboxAll) {
this.checkboxAll = checkboxAll;
}
}