购物车 全选、反选、加减

Activity里

    //避免焦点强占
    mainCk.setOnCheckedChangeListener(null);
    mainCk.setOnClickListener(this);


    myBusinessAdapter.setOnBusinessClickListener(new MyBusinessAdapter.onBusinessClickListener() {
        @Override
        public void onCallBack() {
            boolean b=true;
            for (int i = 0; i <businesslist.size() ; i++) {
                boolean businessCheck = businesslist.get(i).getBusinessCheck();
                b=b&businessCheck;
                for (int j = 0; j <businesslist.get(i).getList().size() ; j++) {
                    boolean goodsCheck = businesslist.get(i).getList().get(j).getGoodsCheck();
                    b=b&goodsCheck;
                }
            }
            mainCk.setChecked(b);
            totalCount();
        }
    });


@Override
public void onClick(View v) {
    //全选
    for (int i = 0; i <businesslist.size() ; i++) {
        businesslist.get(i).setBusinessCheck(mainCk.isChecked());
        for (int j = 0; j <businesslist.get(i).getList().size() ; j++) {
            businesslist.get(i).getList().get(j).setGoodsCheck(mainCk.isChecked());
        }
    }
    //刷新
    myBusinessAdapter.notifyDataSetChanged();
    totalCount();
}



//计算总价
public void totalCount(){
    double b=0;
    for (int i = 0; i <businesslist.size() ; i++) {
        for (int j = 0; j <businesslist.get(i).getList().size() ; j++) {
            if (businesslist.get(i).getList().get(j).getGoodsCheck()){
                double price = businesslist.get(i).getList().get(j).getPrice();
                int number = businesslist.get(i).getList().get(j).getDefaultnumber();
                double v = number * price;
                b+=v;
            }
        }
    }
    mainText.setText("总价是:¥:"+b);
}

商家的适配器

接口回调
onBusinessClickListener onbusinessClickListener;

public interface onBusinessClickListener{
    public void onCallBack();
}
public void setOnBusinessClickListener(onBusinessClickListener onbusinessClickListener){
    this.onbusinessClickListener=onbusinessClickListener;
}

//设置商家标题

    helper.setText(R.id.business_title,item.getSellerName());
    businessView = helper.getView(R.id.business_recy);
    //商品的
    LinearLayoutManager manager=new LinearLayoutManager(mContext,LinearLayoutManager.VERTICAL,false);
    businessView.setLayoutManager(manager);
    myGoodsAdapter = new MyGoodsAdapter(R.layout.goods,item.getList());
    businessView.setAdapter(myGoodsAdapter);


    //避免焦点抢占
    //全选的
    final CheckBox businessCk= helper.getView(R.id.business_ck);
    businessCk.setOnCheckedChangeListener(null);
    businessCk.setChecked(item.getBusinessCheck());


    //点击goods里取消外边全选
    myGoodsAdapter.setOnGoodsClickListener(new MyGoodsAdapter.OnGoodsClickListener() {
        @Override
        public void onCallBack() {
            boolean b=true;
            for (int i = 0; i < item.getList().size(); i++) {
                boolean goodsCheck = item.getList().get(i).getGoodsCheck();
                b=b&goodsCheck;
            }
            businessCk.setChecked(b);
            myGoodsAdapter.notifyDataSetChanged();
            onbusinessClickListener.onCallBack();
        }
    });



    //点击商家条目选中里面的
    businessCk.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            for (int i = 0; i <item.getList().size() ; i++) {
                item.getList().get(i).setGoodsCheck(businessCk.isChecked());
            }
            item.setBusinessCheck(businessCk.isChecked());
            notifyDataSetChanged();
            onbusinessClickListener.onCallBack();
        }
    });

商品的适配器

接口回调

OnGoodsClickListener ongoodsClickListener;
public void setOnGoodsClickListener(OnGoodsClickListener ongoodsClickListener){
    this.ongoodsClickListener=ongoodsClickListener;
}
public interface OnGoodsClickListener{
    public void onCallBack();
}

//设置标题 价格

    helper.setText(R.id.goods_title, item.getTitle());
    helper.setText(R.id.goods_price, "¥:" + item.getPrice());
    ImageView goodsImg = helper.getView(R.id.goods_img);
    final String imageString = item.getImages();
    final String[] img = imageString.split("\\|");
    Glide.with(mContext).load(img[0]).into(goodsImg);

    //避免焦点强占
    //不提成全局 会错位
    final CheckBox goodsCheck = helper.getView(R.id.goods_ck);
    goodsCheck.setOnCheckedChangeListener(null);
    goodsCheck.setChecked(item.getGoodsCheck());


    //点击商家条目选中里面的
    goodsCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            item.setGoodsCheck(isChecked);
            ongoodsClickListener.onCallBack();
        }
    });

    //加减器
    CaView caView = helper.getView(R.id.ca);
    caView.setonCallCalview(new CaView.OnCallCalview() {
        @Override
        public void add(int number) {
            item.setDefaultnumber(number);
            ongoodsClickListener.onCallBack();
        }

        @Override
        public void jian(int number) {
            item.setDefaultnumber(number);
            ongoodsClickListener.onCallBack();
        }
    });

自定义view的加减器

继承 LinearLayout
方法里:
View footView = LayoutInflater.from(context).inflate(R.layout.ca_layout, this);
//数量
String stringnumber = ca_text.getText().toString();
int number = Integer.parseInt(stringnumber);

    switch (v.getId()){
        case R.id.ca_jian:

            //减
            number--;
            if (number<0){
                number=0;
                ca_text.setText(String.valueOf(number));
            }
            ca_text.setText(String.valueOf(number));
            oncallCalview.jian(number);

            break;
        case R.id.ca_add:

            //加
            number++;
            ca_text.setText(String.valueOf(number));
            oncallCalview.add(number);

            break;
    }

接口回调
OnCallCalview oncallCalview;
public void setonCallCalview(OnCallCalview oncallCalview){
this.oncallCalview=oncallCalview;
}
public interface OnCallCalview{
public void add(int number);
public void jian(int number);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用React的状态来实现全选反选购物车功能。 首先,你需要定义一个组件,例如 `ShoppingCart` 组件,它包含多个 `CartItem` 子组件。每个 `CartItem` 组件都有一个 `checked` 属性,表示该商品是否被选中。 在 `ShoppingCart` 组件中,需要定义一个 `selectedAll` 状态,表示是否全选。同时,还需要定义一个 `handleSelectAll` 函数,用于处理全选/反选功能。该函数将会通过 `onChange` 事件绑定到全选的复选框上。 以下是示例代码: ```jsx import React, { useState } from "react"; const ShoppingCart = ({ items }) => { const [selectedAll, setSelectedAll] = useState(false); // 处理全选/反选 const handleSelectAll = () => { setSelectedAll(!selectedAll); }; // 处理子组件的选中状态改变 const handleItemChange = (index, checked) => { // TODO: 更新 items[index] 的选中状态 }; return ( <div> <label> <input type="checkbox" checked={selectedAll} onChange={handleSelectAll} /> 全选 </label> {items.map((item, index) => ( <CartItem key={index} item={item} checked={item.checked} onChange={handleItemChange} /> ))} </div> ); }; const CartItem = ({ item, checked, onChange }) => { const handleItemChange = (event) => { onChange(item.id, event.target.checked); }; return ( <div> <label> <input type="checkbox" checked={checked} onChange={handleItemChange} /> {item.name} </label> </div> ); }; ``` 在 `ShoppingCart` 组件中,我们通过 `map` 方法遍历所有的商品,并渲染 `CartItem` 子组件。在 `CartItem` 组件中,我们通过 `checked` 和 `onChange` 属性来控制选中状态和处理状态改变。 在 `handleSelectAll` 函数中,我们使用 `setSelectedAll` 来更新 `selectedAll` 状态。在 `handleItemChange` 函数中,我们需要更新 `items` 数组中对应商品的选中状态。你可以通过 `useState` 状态管理库来管理 `items` 数组的状态,或者通过 `Redux` 等状态管理工具来管理状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值