购物车逻辑

​public void setData(MyStoreAdapter myStoreAdapter, List<CarBean.DataBean.ListBean> list,int i){
        this.myStoreAdapter = myStoreAdapter;
        this.list = list;
        position = i;
        String num = list.get(position).getNum();
        editCount.setText(num);
    }​

 switch (v.getId()){
            case R.id.rightBtn:
                num++;
                editCount.setText(num + "");
                list.get(position).setNum(String.valueOf(num));
                mCallBackListener.callBack();
                myStoreAdapter.notifyItemChanged(position);
            break;
            case R.id.leftBtn:
                if (num > 1) {
                    num--;
                } else {
                    //Toast.makeText(context, "商品数量不能小于1", Toast.LENGTH_LONG).show();
                }
                editCount.setText(num + "");
                list.get(position).setNum(String.valueOf(num));
                mCallBackListener.callBack();
                myStoreAdapter.notifyItemChanged(position);
                break;

        }

 private CallBackListener mCallBackListener;

    public void setOnCallBack(CallBackListener listener) {
        this.mCallBackListener = listener;
    }

    public interface CallBackListener {
        void callBack();
    }

 

   //根据我记录的状态,改变勾选
        viewHolder.checkStore.setChecked(list.get(i).isCheck());
        viewHolder.checkStore.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                //首先改变自己的状态
                list.get(i).setCheck(isChecked);
                //回调,目的是告诉activity,有人选中状态被改变
                if (shopCallBackListener!=null){
                    shopCallBackListener.callBack();
                }
            }
        });
        viewHolder.shopbar.setData(this,list,i);
        viewHolder.shopbar.setOnCallBack(new ShopBar.CallBackListener() {
            @Override
            public void callBack() {
                if(shopCallBackListener!=null){
                    shopCallBackListener.callBack();
                }

            }
        });

  //子商品全选反选
    public void selectOrRemoveAll(boolean isSelectAll){
        for (CarBean.DataBean.ListBean listBean : list){
            listBean.setCheck(isSelectAll);
        }
        notifyDataSetChanged();
    }

    public void setListener(ShopCallBackListener shopCallBackListener){
        this.shopCallBackListener = shopCallBackListener;
    }
    public interface ShopCallBackListener {
        void callBack();
    }

 

viewHolder.checkBoxShop.setChecked(this.mlist.get(i).isCheck());
        myStoreAdapter.setListener(new MyStoreAdapter.ShopCallBackListener() {
            @Override
            public void callBack() {
                //从商品适配里回调回来,回给activity,activity计算价格和数量
                if (mshopCallBackListener!=null){
                    mshopCallBackListener.callBack(mlist);
                }
                List<CarBean.DataBean.ListBean> listBeans = mlist.get(i).getList();
                //创建一个临时的标志位,用来记录现在点击的状态
                boolean isAllChecked = true;
                for (CarBean.DataBean.ListBean bean :listBeans){
                    if (!bean.isCheck()){
                        //只要有一个商品未选中,标志位设置成false,并且跳出循环
                        isAllChecked = false;
                        break;
                    }
                }
                //刷新商家的状态
                viewHolder.checkBoxShop.setChecked(isAllChecked);
                mlist.get(i).setCheck(isAllChecked);
            }
        });

        //监听checkBox的点击事件
        //目的是改变旗下所有商品的选中状态
        viewHolder.checkBoxShop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mlist.get(i).setCheck(viewHolder.checkBoxShop.isChecked());
                //调用产品adapter的方法,用来全选和反选
                myStoreAdapter.selectOrRemoveAll(viewHolder.checkBoxShop.isChecked());
            }
        });
 public void setList(List<CarBean.DataBean> list){
        this.mlist = list;
        notifyDataSetChanged();
    }
  public void setLintener(ShopCallBackListener mshopCallBackListener){
        this.mshopCallBackListener = mshopCallBackListener;
    }

    public interface ShopCallBackListener{
        void callBack(List<CarBean.DataBean> list);
    }

 

 mList = carBean.getData();
            if (mList != null) {
                mList.remove(0);
                myCartAdapter.setList(mList);
            }
            myCartAdapter.setLintener(new MyCartAdapter.ShopCallBackListener() {
                @Override
                public void callBack(List<CarBean.DataBean> list) {
                    //在这里重新遍历已经改状态后的数据,
                    // 这里不能break跳出,因为还需要计算后面点击商品的价格和数目,所以必须跑完整个循环
                    double totalprice = 0;
                    //勾选商品的数量,不是该商品购买的数量
                    int num = 0;
                    //所有商品总数,和上面的数量做比对,如果两者相等,则说明全选
                    int totalNum = 0;
                    for (int a = 0;a<list.size();a++){
                        //获取商家里的商品
                        List<CarBean.DataBean.ListBean> listAll = list.get(a).getList();
                        for (int i = 0;i<listAll.size();i++){
                            totalNum = totalNum + Integer.valueOf(listAll.get(i).getNum());
                            if (listAll.get(i).isCheck()){
                                totalprice = totalprice + (Integer.valueOf(listAll.get(i).getNum())*Double.valueOf(listAll.get(i).getPrice())) ;
                                num = num +Integer.valueOf(listAll.get(i).getNum());
                            }
                        }
                    }
                    if (num<totalNum){
                        //不是全部选中
                        checkAll.setChecked(false);
                    }else{
                        checkAll.setChecked(true);
                    }

                    textTotal.setText("合计:"+totalprice);
                    btnJie.setText("去结算:"+num);

                }
            });

        }
        checkAll.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                checkSeller(checkAll.isChecked());
                myCartAdapter.notifyDataSetChanged();
            }
        });
    }
    /**
     * 修改选中状态,获取价格和数量
     */
    private void checkSeller(boolean bool){
        double totalprice = 0;
        int num = 0;
        for (int a = 0;a<mList.size();a++){
            //遍历商家,改变状态
            CarBean.DataBean dataBean = mList.get(a);
            dataBean.setCheck(bool);

            List<CarBean.DataBean.ListBean> listAll = mList.get(a).getList();
            for (int i = 0;i<listAll.size();i++){
                listAll.get(i).setCheck(bool);
                totalprice = totalprice + (Integer.valueOf(listAll.get(i).getNum())*Double.valueOf(listAll.get(i).getPrice())) ;
                num  = num + Integer.valueOf(listAll.get(i).getNum());
            }
        }
        if (bool) {
            textTotal.setText("合计:" + totalprice);
            btnJie.setText("去结算(" + num + ")");
        } else {
            textTotal.setText("合计:0.00");
            btnJie.setText("去结算(0)");
        }
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
毕业设计,基于SpringBoot+Vue+MySQL开发的社区医院管理系统,源码+数据库+毕业论文+视频演示 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的社区医院管理系统实现了病例信息、字典表、家庭医生、健康档案、就诊信息、前台、药品、用户、用户、用户表等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让社区医院管理系统更能从理念走到现实,确确实实的让人们提升信息处理效率。 关键字:社区医院管理系统;信息管理,时效性,安全性,MySql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值