购物车逻辑

本文详细解析了一种购物车商品选择的多级联动机制,通过父级、子级逻辑处理,实现了商品选中状态的同步更新。文章展示了如何在不同层级间传递数据,确保选中状态的一致性,并提供了实现总价格计算的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逻辑逻辑逻辑逻辑逻辑   
 @Override
    public void getData(final List<DataBean> dataBeans) {
        this.dataBeans = dataBeans;
        shopRecyc.setLayoutManager(new LinearLayoutManager(this));
        myBussionAdapter = new MyBussionAdapter(this,dataBeans);
        shopRecyc.setAdapter(myBussionAdapter);

        myBussionAdapter.setOnClickListe(new MyBussionAdapter.BussionCallBack() {
            @Override
            public void getData() {
                boolean result = true;
                for (int i = 0 ;i < dataBeans.size(); i++){
                    boolean flag = dataBeans.get(i).isFlag();
                    result  = result & flag;

                    for (int j = 0 ; j< dataBeans.get(i).getShoppingCartList().size();j++){
                        boolean flag1 = dataBeans.get(i).getShoppingCartList().get(j).isFlag();
                        result = result  & flag1;
                    }
                }
                shopCheckAll.setChecked(result);
                total();
                myBussionAdapter.notifyDataSetChanged();
            }

        });
        shopCheckAll.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                for (int i = 0 ; i < dataBeans.size() ; i++){
                    dataBeans.get(i).setFlag(shopCheckAll.isChecked());
                    for (int j = 0 ;j<dataBeans.get(i).getShoppingCartList().size();j++){
                        dataBeans.get(i).getShoppingCartList().get(j).setFlag(shopCheckAll.isChecked());
                    }
                }
                total();
                myBussionAdapter.notifyDataSetChanged();
            }
        });
    }

    public void  total(){
        double totalCount = 0 ;
        for (int i = 0 ; i <dataBeans.size(); i++ ){
            for (int j = 0 ; j < dataBeans.get(i).getShoppingCartList().size();j++){
                if (dataBeans.get(i).getShoppingCartList().get(j).isFlag()){
                    int count = dataBeans.get(i).getShoppingCartList().get(j).getCount();
                    double price = dataBeans.get(i).getShoppingCartList().get(j).getPrice();
                    totalCount = count *price;
                }
            }
            shopPrice.setText(totalCount+"");
            myBussionAdapter.notifyDataSetChanged();
        }
    }
}

 

父级逻辑父级逻辑父级逻辑

@Override
public void onBindViewHolder(@NonNull final VKK vkk, final int i) {

    final List<ShoppingCartLists> shoppingCartList = dataBeans.get(i).getShoppingCartList();
    vkk.name.setText(dataBeans.get(i).getCategoryName());
    myChildenAdapter = new MyChildenAdapter(context, shoppingCartList);
    vkk.itemrecyc.setLayoutManager(new LinearLayoutManager(context));
    vkk.itemrecyc.setAdapter(myChildenAdapter);

    vkk.checkbutn.setOnCheckedChangeListener(null);
    vkk.checkbutn.setChecked(dataBeans.get(i).isFlag());
    vkk.checkbutn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            for (int i = 0 ;  i<shoppingCartList.size();i++){
                shoppingCartList.get(i).setFlag(vkk.checkbutn.isChecked());
            }
            dataBeans.get(i).setFlag(vkk.checkbutn.isChecked());
            myChildenAdapter.notifyDataSetChanged();
            bussionCallBack.getData();
        }
    });

    myChildenAdapter.setOnClickListen(new MyChildenAdapter.GoodsCallBack() {
        @Override
        public void getData() {
            boolean result = true;
        for (int  x = 0; x < shoppingCartList.size();x++){
            boolean flag = shoppingCartList.get(x).isFlag();
            result = result& flag;
        }
        dataBeans.get(i).setFlag(result);
        myChildenAdapter.notifyDataSetChanged();
        bussionCallBack.getData();
        }
    });



}

子级逻辑子级逻辑子级逻辑

@Override
public void onBindViewHolder(@NonNull final GNN gnn, final int i) {
    Glide.with(context).load(shoppingCartList.get(i).getPic()).into(gnn.im);
    gnn.name.setText(shoppingCartList.get(i).getCommodityName());
    gnn.pric.setText(shoppingCartList.get(i).getPrice()+"");
    gnn.num.setText(shoppingCartList.get(i).getCount()+"");

    gnn.ch.setOnClickListener(null);
    gnn.ch.setChecked(shoppingCartList.get(i).isFlag());
    gnn.ch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            shoppingCartList.get(i).setFlag(isChecked);
            goodsCallBack.getData();
        }
    });

    gnn.add.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String s = gnn.num.getText().toString();
            int i1 = Integer.parseInt(s);
            i1 = i1 + 1;
            shoppingCartList.get(i).setCount(i1);
            goodsCallBack.getData();
        }
    });



    gnn.jian.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String s = gnn.num.getText().toString();
            int i1 = Integer.parseInt(s);
            i1 = i1 -1;
            if (i <=0){
                Toast.makeText(context, "不能减了", Toast.LENGTH_SHORT).show();
            }
            shoppingCartList.get(i).setCount(i1);
            goodsCallBack.getData();
        }
    });

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值