shopperAdapter
package com.example.gouwuche20181117.adapter;
import android.content.Context;
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.CompoundButton;
import android.widget.TextView;
import com.example.gouwuche20181117.R;
import com.example.gouwuche20181117.bean.CartBean;
import java.util.List;
/**
* Created by 红鼻子小黑 on 2018/11/17.
*/
public class ShopperAdapter extends RecyclerView.Adapter<ShopperAdapter.ViewHolder> {
private Context context;
private List<CartBean.DataBean> list;
public ShopperAdapter(Context context, List<CartBean.DataBean> list) {
this.context = context;
this.list = list;
}
public interface OnShopperClickListener {
void onShopperClick(int posotion, boolean isCheck);
}
private OnShopperClickListener shopperClickListener;
public void setOnShopperClickListener(OnShopperClickListener listener) {
this.shopperClickListener = listener;
}
private ProductAdapter.OnAddDecreaseProductListener productListener;
public void setOnAddDecreaseProductListener(ProductAdapter.OnAddDecreaseProductListener listener) {
this.productListener = listener;
}
@Override
public ShopperAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_shopper, parent, false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(ShopperAdapter.ViewHolder holder, final int position) {
final CartBean.DataBean dataBean = list.get(position);
holder.txt_shopper_name.setText(dataBean.getSellerName());
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(context);
holder.rv_product.setLayoutManager(layoutManager);
List<CartBean.DataBean.ListBean> list1 = dataBean.getList();
final ProductAdapter productAdapter = new ProductAdapter(context, list1);
if (productListener != null) {
productAdapter.setOnAddDecreaseProductListener(productListener);
}
productAdapter.setOnproductClickListener(new ProductAdapter.OnproductClickListener() {
@Override
public void onproductClick(int position, boolean isChecked) {
if (!isChecked) {
dataBean.setChecked(false);
shopperClickListener.onShopperClick(position, false);
} else {
boolean isAllProductSelected = true;
for (CartBean.DataBean.ListBean listBean : dataBean.getList()) {
if (!listBean.isChecked()) {
isAllProductSelected = false;
break;
}
}
dataBean.setChecked(isAllProductSelected);
shopperClickListener.onShopperClick(position, true);
}
notifyDataSetChanged();
productListener.onChage(0, 0);
}
});
holder.rv_product.setAdapter(productAdapter);
holder.cb_shpper.setOnCheckedChangeListener(null);
holder.cb_shpper.setChecked(dataBean.isChecked());
holder.cb_shpper.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
dataBean.setChecked(isChecked);
List<CartBean.DataBean.ListBean> dataBeanList = dataBean.getList();
for (CartBean.DataBean.ListBean listBean : dataBeanList) {
listBean.setChecked(isChecked);
}
productAdapter.notifyDataSetChanged();
shopperClickListener.onShopperClick(position, isChecked);
}
});
}
@Override
public int getItemCount() {
return list.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
private CheckBox cb_shpper;
private TextView txt_shopper_name;
private RecyclerView rv_product;
public ViewHolder(View itemview) {
super(itemview);
cb_shpper = itemview.findViewById(R.id.cb_shopper);
txt_shopper_name = itemview.findViewById(R.id.txt_shopper_name);
rv_product = itemview.findViewById(R.id.rv_prouct);
}
}
}
productAdapter
package com.example.gouwuche20181117.adapter;
import android.content.Context;
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.CompoundButton;
import android.widget.TextView;
import com.example.gouwuche20181117.R;
import com.example.gouwuche20181117.bean.CartBean;
import com.example.gouwuche20181117.widght.ADDDecreaseView;
import com.facebook.drawee.view.SimpleDraweeView;
import java.util.List;
/**
* Created by 红鼻子小黑 on 2018/11/17.
*/
public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ViewHolder> {
private Context context;
private List<CartBean.DataBean.ListBean> list;
public ProductAdapter(Context context, List<CartBean.DataBean.ListBean> list) {
this.context = context;
this.list = list;
}
public interface OnproductClickListener{
void onproductClick(int position,boolean isChecked);
}
private OnproductClickListener productClickListener;
public void setOnproductClickListener(OnproductClickListener listener){
this.productClickListener = listener;
}
//加减器
public interface OnAddDecreaseProductListener{
void onChage(int position,int num);
}
private OnAddDecreaseProductListener productListener;
public void setOnAddDecreaseProductListener(OnAddDecreaseProductListener listener){
this.productListener = listener;
}
@Override
public ProductAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_product,parent,false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(ProductAdapter.ViewHolder holder, final int position) {
final CartBean.DataBean.ListBean listBean = list.get(position);
holder.img_product.setImageURI(list.get(position).getImages().split("\\|")[0]);
holder.txt_product_name.setText(list.get(position).getTitle());
holder.txt_single_price.setText(String.valueOf(list.get(position).getPrice()));
holder.adv_product.setNum(listBean.getNum());
holder.adv_product.setOnAddDecreaseClickListener(new ADDDecreaseView.OnAddDecreaseClickListener() {
@Override
public void add(int num) {
listBean.setNum(num);
if (productListener !=null){
productListener.onChage(position,num);
}
}
@Override
public void dectease(int num) {
listBean.setNum(num);
if (productListener !=null){
productListener.onChage(position,num);
}
}
});
holder.cb_product.setOnCheckedChangeListener(null);
holder.cb_product.setChecked(listBean.isChecked());
holder.cb_product.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
listBean.setChecked(isChecked);
if (productClickListener !=null){
productClickListener.onproductClick(position,isChecked);
}
}
});
}
@Override
public int getItemCount() {
return list.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
private CheckBox cb_product;
private SimpleDraweeView img_product;
private TextView txt_product_name;
private TextView txt_single_price;
private ADDDecreaseView adv_product;
public ViewHolder(View itemview){
super(itemview);
adv_product = itemview.findViewById(R.id.adv_product);
cb_product =itemview.findViewById(R.id.cb_product);
img_product=itemview.findViewById(R.id.img_product);
txt_product_name=itemview.findViewById(R.id.txt_product_name);
txt_single_price=itemview.findViewById(R.id.txt_single_price);
}
}
}
mainActivity
package com.example.gouwuche20181117; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.TextView; import com.example.gouwuche20181117.adapter.ProductAdapter; import com.example.gouwuche20181117.adapter.ShopperAdapter; import com.example.gouwuche20181117.bean.CartBean; import com.example.gouwuche20181117.cart.presenter.CartPresenter; import com.example.gouwuche20181117.cart.view.CartIView; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; public class MainActivity extends AppCompatActivity implements CartIView { @BindView(R.id.txt_edit_or_finish) TextView txtEditOrFinish; @BindView(R.id.cb_total_select) CheckBox cbTotalSelect; @BindView(R.id.txt_taotal_price) TextView txtTaotalPrice; @BindView(R.id.btn_calu) Button btnCalu; @BindView(R.id.rv_shopper) RecyclerView rvShopper; private List<CartBean.DataBean> list; private ShopperAdapter shopperAdapter; private CartPresenter cartPresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); initData(); setListener(); } private void setListener() { cbTotalSelect.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { boolean isChecked = cbTotalSelect.isChecked(); for (CartBean.DataBean dataBean :list){ dataBean.setChecked(isChecked); for (CartBean.DataBean.ListBean listBean : dataBean.getList()){ listBean.setChecked(isChecked); } }
calculatePrice();
shopperAdapter.notifyDataSetChanged(); } }); } private void initData() { list = new ArrayList<>(); cartPresenter = new CartPresenter(); shopperAdapter = new ShopperAdapter(MainActivity.this,list); shopperAdapter.setOnShopperClickListener(new ShopperAdapter.OnShopperClickListener() { @Override public void onShopperClick(int posotion, boolean isCheck) { if (!isCheck){ cbTotalSelect.setChecked(false); }else{ boolean isAllShopperCkecked = true; for (CartBean.DataBean dataBean : list){ if (!dataBean.isChecked()){ isAllShopperCkecked = false; break; } } cbTotalSelect.setChecked(isAllShopperCkecked); } calculatePrice(); } }); shopperAdapter.setOnAddDecreaseProductListener(new ProductAdapter.OnAddDecreaseProductListener() { @Override public void onChage(int position, int num) { calculatePrice(); } }); RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(MainActivity.this); rvShopper.setLayoutManager(layoutManager); rvShopper.setAdapter(shopperAdapter); cartPresenter.attach(this); cartPresenter.gouwuche(75); } private void calculatePrice() { float tatalPrice = 0; for (CartBean.DataBean dataBean : list){ for (CartBean.DataBean.ListBean listBean : dataBean.getList()){ if (listBean.isChecked()){ tatalPrice += listBean.getNum() * listBean.getPrice(); } } } txtTaotalPrice.setText("总价:" +tatalPrice); } @Override public void onSuccess(CartBean cartBean) { list.clear(); list.addAll(cartBean.getData()); shopperAdapter.notifyDataSetChanged(); } @Override public void onFaild(Throwable t) { } @Override protected void onDestroy() { super.onDestroy(); if (cartPresenter !=null){ cartPresenter.dettach(); } } }