万能适配器实现购物车功能

万能适配器实现购物车功能

布局可自己实现
在这里插入图片描述

1.适配器+子布局添加点击事件

package com.example.day09_shopcar;

import android.support.annotation.Nullable;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;

import java.util.List;

public class MyAdapter extends BaseQuickAdapter<Food.DataBean, BaseViewHolder> {
    public MyAdapter(int layoutResId, @Nullable List<Food.DataBean> data) {
        super(layoutResId, data);
    }

    @Override
    protected void convert(BaseViewHolder helper, Food.DataBean item) {
        helper.setText(R.id.title_,item.getTitle());
        helper.setText(R.id.price,item.getNum()+"");
        helper.setText(R.id.num_,item.getChecknum()+"");
        helper.setChecked(R.id.checkbox1,item.getChecked());
        Glide.with(mContext).load(item.getPic()).into((ImageView)helper.getView(R.id.img_));

        helper.addOnClickListener(R.id.jia_num)
                .addOnClickListener(R.id.jian_num)
                .addOnClickListener(R.id.checkbox1)
                .addOnClickListener(R.id.del_);
    }
}

2.MainActivity显示+点击事件实现功能

  • 商品实体类里必须要有一个boolean值 获取是否选择 还有一个int值 保存商品个数
	 private Boolean checked = false;
     private int checknum = 0;
  • 加减 删除 选择
 myAdapter = new MyAdapter(R.layout.shopcar_layout,list);
        rv.setAdapter(myAdapter);
        rv.setLayoutManager(new LinearLayoutManager(this));
        initData();

        myAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
            @Override
            public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {

                switch (view.getId()){
                //增加个数
                    case R.id.jia_num:
                            int checknum = list.get(position).getChecknum();
                            checknum ++;
                            list.get(position).setChecknum(checknum);
                            myAdapter.notifyDataSetChanged();
                            count();
                        break;

					//减少个数
                    case R.id.jian_num:
                        int checknum1 = list.get(position).getChecknum();
                        if (checknum1 > 0) {
                            checknum1 --;
                        }
                        list.get(position).setChecknum(checknum1);
                        myAdapter.notifyDataSetChanged();
                        count();
                        break;

					//点击删除
                    case R.id.del_:
                       list.remove(position);
                       myAdapter.notifyDataSetChanged();
                       count();
                        break;
					
					//单个选择
                    case R.id.checkbox1:
                        CheckBox checkBox = (CheckBox) view;
                        list.get(position).setChecked(checkBox.isChecked());
                        myAdapter.notifyDataSetChanged();
                        count();
                        break;

                }

            }
        });

	//全选+取消全选
        zongCh.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                for (int i = 0; i < list.size(); i++) {
                    list.get(i).setChecked(isChecked);
                }
                myAdapter.notifyDataSetChanged();
                count();
            }
        });

计算总价

public void count(){
        int count = 0;
        for (int i = 0; i < list.size(); i++) {
            Boolean c = list.get(i).getChecked();
            if (c) {
                int price = list.get(i).getNum();
                int checknum = list.get(i).getChecknum();
                count += price*checknum;
            }
        }

        allMoney.setText(count+"");
    }
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值