Android(安卓)淘宝购物车细节详情
16lz
2021-01-26
public class MainActivity extends AppCompatActivity implementsCartContract.ICartView,CartUICallback,XRecyclerView.LoadingListener { private XRecyclerView xRecyclerView; private CheckBox checkBox; private CartPresenter cartPresenter; private int page = 1; private CartAdapter cartAdapter; private List data; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); xRecyclerView = findViewById(R.id.rv); checkBox = findViewById(R.id.qx); xRecyclerView.setLoadingListener(this); xRecyclerView.setLoadingMoreEnabled(true); xRecyclerView.setLayoutManager(new LinearLayoutManager(this)); initData(); } private void initData() { cartPresenter = new CartPresenter(this); requestData(); checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked){ for (CartBean.Cart datum : data) { datum.isChecked=true; for (CartBean.Cart.Product product : datum.list) { product.isProductChecked=true; } } }else { for (CartBean.Cart datum : data) { datum.isChecked=false; for (CartBean.Cart.Product product : datum.list) { product.isProductChecked=false; } } } cartAdapter.notifyDataSetChanged(); getprice(); } }); } private void requestData(){ HashMap params = new HashMap<>(); params.put("uid","71"); params.put("page",page+""); cartPresenter.getCartList(params); } public void getprice() { double price=0; for (CartBean.Cart datum : data) { for (CartBean.Cart.Product product : datum.list) { if (product.isProductChecked) { price += product.price * product.productNum; } } } checkBox.setText("¥:"+price); } @Override public void success(List list) { if (list!=null){ data=list; for (CartBean.Cart datum : data) { for (CartBean.Cart.Product product : datum.list) { product.productNum=1; } } } //list.remove(0); if (page==1){ xRecyclerView.refreshComplete(); cartAdapter = new CartAdapter(list, this); xRecyclerView.setAdapter(cartAdapter); cartAdapter.setCartUICallback(this); }else { if (cartAdapter==null){ cartAdapter = new CartAdapter(list, this); xRecyclerView.setAdapter(cartAdapter); cartAdapter.setCartUICallback(this); }else { cartAdapter.AddList(list); } xRecyclerView.loadMoreComplete(); } } @Override public void notyprice() { getprice(); } @Override public void onRefresh() { page=1; requestData(); } @Override public void onLoadMore() { page++; requestData(); }}
public class CartAdapter extends XRecyclerView.Adapter implements CartCallback { private List list; private Context context; private ProductAdapter productAdapter; public CartAdapter(List list, Context context) { this.list = list; this.context = context; } public void AddList(List list) { if (list!=null){ this.list.addAll(list); notifyDataSetChanged(); } } private CartUICallback cartUICallback; public void setCartUICallback(CartUICallback cartUICallback) { this.cartUICallback = cartUICallback; } @NonNull @Override public MyVh onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { View view = LayoutInflater.from(context).inflate(R.layout.cart_layout_item,viewGroup,false); return new MyVh(view); } @Override public void onBindViewHolder(@NonNull final MyVh myVh, int i) { final CartBean.Cart cart = list.get(i); myVh.tv_title.setText(cart.sellerName); myVh.xRecyclerView.setLayoutManager(new LinearLayoutManager(context)); productAdapter = new ProductAdapter(cart.list, context); productAdapter.setCartCallback(this); myVh.xRecyclerView.setAdapter(productAdapter); myVh.checkBox.setChecked(cart.isChecked); 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.isProductChecked=cart.isChecked; } notifyDataSetChanged(); if (cartUICallback!=null){ cartUICallback.notyprice(); } } }); } @Override public int getItemCount() { return list==null?0:list.size(); } @Override public void CartCallback(boolean isChecked, int pos) { list.get(pos).isChecked=isChecked; notifyDataSetChanged(); if (cartUICallback!=null){ cartUICallback.notyprice(); } } @Override public void notynums() { if (cartUICallback!=null){ cartUICallback.notyprice(); } }}
public interface CartCallback { void CartCallback(boolean isChecked,int pos); void notynums();}
public interface CartUICallback { void notyprice();}
public class ProductAdapter extends XRecyclerView.Adapter { private List list; private Context context; private CartCallback cartCallback; public void setCartCallback(CartCallback cartCallback) { this.cartCallback = cartCallback; } public ProductAdapter(List list, Context context) { this.list = list; this.context = context; } @NonNull @Override public MyVh onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { View view = LayoutInflater.from(context).inflate(R.layout.product_layout_item,viewGroup,false); return new MyVh(view); } @Override public void onBindViewHolder(@NonNull final MyVh myVh, final int i) { final CartBean.Cart.Product product = list.get(i); myVh.tv_title.setText(product.title); myVh.tv_price.setText(product.price+""); String[] im = product.images.split("\\|"); Glide.with(context).load(im[0]).into(myVh.iv); myVh.checkBox.setChecked(product.isProductChecked); myVh.addMinus.setAddminusCallback(new AddMinus.AddminusCallback() { @Override public void addCallback(int num) { product.productNum=num; if (cartCallback!=null){ cartCallback.notynums(); } } }); myVh.checkBox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { list.get(i).isProductChecked=myVh.checkBox.isChecked(); if (cartCallback!=null){ for (CartBean.Cart.Product product1 : list) { if (product1.isProductChecked==false){ cartCallback.CartCallback(false,product1.pos); return; } cartCallback.CartCallback(true,product1.pos); } } } }); }}
public class CartBean { public String code; public String msg; public List data; public class Cart { public boolean isChecked;//一级列表是否选中标志位 public String sellerName; public String sellerid; public List list; public class Product { public boolean isProductChecked;//二级 public String title; public String images; public double price; public String pid; public int pos; public int productNum =1; } }}
public class AddMinus extends LinearLayout { private TextView tv_jian; private TextView tv_jia; private EditText ed_num; private int num=1; //重写的方法 private void init(final Context context) { View view = LayoutInflater.from(context).inflate(R.layout.add_minus_layout,this,true); tv_jian = view.findViewById(R.id.tv_jian); tv_jia = view.findViewById(R.id.tv_jia); ed_num = view.findViewById(R.id.ed_num); ed_num.setText("1"); tv_jia.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { num++; ed_num.setText(num+""); if (addminusCallback!=null){ addminusCallback.addCallback(num); } } }); tv_jian.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { num--; if (num==0){ num=1; Toast.makeText(context,"不能再减了 ",Toast.LENGTH_SHORT).show(); } ed_num.setText(num+""); if (addminusCallback!=null){ addminusCallback.addCallback(num); } } }); } private AddminusCallback addminusCallback; public void setAddminusCallback(AddminusCallback addminusCallback) { this.addminusCallback = addminusCallback; } public interface AddminusCallback{ void addCallback(int num); }}
更多相关文章
- android 进度条学习
- Android(安卓)Parcelable代码自动生成插件 Parcelable code gene
- Android(安卓)Service和广播联合更新UI的例子
- Android(安卓)ViewPager不可滑动
- Android-Module:ToggleButton常用XML属性
- 安卓开发_浅谈Android动画(三)
- Android(安卓)图表框架
- 关于Android中ToolBar返回
- Android(安卓)Home按键的监听与屏蔽方式