利用RxJava与Retrofit结合实现购物车

与博客<<刷新查询购物车的操作---通过访问刷新的接口之后访问查询接口activity-adapter>>相同只不过访问网络方式不同

下边是适配器的类:

public class MyExpandAdapter extends BaseExpandableListAdapter {
    MyCartBean myCartBean;
    Context context;
    Handler handler;
    ShowPresenter sp;
    public MyExpandAdapter(MyCartBean myCartBean, Context context, Handler handler, ShowPresenter sp) {
        this.myCartBean = myCartBean;
        this.context = context;
        this.handler=handler;
        this.sp=sp;
        Log.d("++++++","1");
    }

    @Override
    public int getGroupCount() {
        return myCartBean.getData().size();
    }

    @Override
    public int getChildrenCount(int i) {
        return myCartBean.getData().get(i).getList().size();
    }

    @Override
    public Object getGroup(int i) {
        return myCartBean.getData().get(i);
    }

    @Override
    public Object getChild(int i, int i1) {
        return myCartBean.getData().get(i).getList().get(i1);
    }

    @Override
    public long getGroupId(int i) {
        return i;
    }

    @Override
    public long getChildId(int i, int i1) {
        return i1;
    }

    @Override
    public boolean hasStableIds() {
        return true;
    }

    @Override
    public View getGroupView(final int i, boolean b, View view, ViewGroup viewGroup) {
        //
        Log.d("++++++","2");
        final GroupHolder groupHolder;
        if(view==null){
            view=View.inflate(context, R.layout.group_item,null);
            groupHolder=new GroupHolder();
            groupHolder.check_group=view.findViewById(R.id.check_group);
            groupHolder.text_group=view.findViewById(R.id.text_group);
            //
            view.setTag(groupHolder);
        }else{
            groupHolder= (GroupHolder) view.getTag();
        }
          //赋值
         groupHolder.check_group.setChecked(myCartBean.getData().get(i).isGroupChecked());
         groupHolder.text_group.setText(myCartBean.getData().get(i).getSellerName());
                 //组的ck的点击事件
           groupHolder.check_group.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View view) {
                   updateAllchildsByGuoupCk(myCartBean.getData().get(i).getList(),groupHolder.check_group.isChecked());
               }
           });

        return view;
    }
         /*
         * 根据组的ck改变
         * 调用接口
         * */
       private void updateAllchildsByGuoupCk(List<MyCartBean.DataBean.ListBean> list, boolean checked) {
              Observable[] obsers=new Observable[list.size()];

             for (int i=0;i<list.size();i++){
                 Map<String, String> params = new HashMap<>();
                 params.put("uid","2776");
                 params.put("sellerid", list.get(i).getSellerid() + "");
                 params.put("pid", list.get(i).getPid() + "");
                 params.put("selected", String.valueOf(checked ? 1:0));
                 params.put("num", String.valueOf(list.get(i).getNum()));
                 obsers[i]=RetrofitHelper.getApiService(Api.base_url).post("product/updateCarts",params);
              }
                Observable.merge(obsers)
                        .subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe(new Subscriber() {
                            @Override
                            public void onCompleted() {
                                sp.getData(Api.base_url);
                            }

                            @Override
                            public void onError(Throwable e) {

                            }

                            @Override
                            public void onNext(Object o) {

                            }
                        });

        }


    @Override
    public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
         ChildHolder childHolder;
        Log.d("++++++","3");
         if(view==null){
             view=View.inflate(context,R.layout.child_item,null);
             childHolder=new ChildHolder();
             childHolder.check_child= view.findViewById(R.id.check_child);
             childHolder.text_price = view.findViewById(R.id.text_price);
             childHolder.image_good=view.findViewById(R.id.image_good);
             childHolder.text_add=view.findViewById(R.id.text_add);
             childHolder.text_jian=view.findViewById(R.id.text_jian);
             childHolder.text_num=view.findViewById(R.id.text_num);
             childHolder.text_title=view.findViewById(R.id.text_title);
              view.setTag(childHolder);
         }else{
             childHolder= (ChildHolder) view.getTag();
         }

        //赋值
        final MyCartBean.DataBean.ListBean listBean = myCartBean.getData().get(i).getList().get(i1);

        childHolder.text_num.setText(listBean.getNum() + "");//......注意
        childHolder.text_price.setText("¥" + listBean.getBargainPrice());
        childHolder.text_title.setText(listBean.getTitle());
        //设置checkBox选中状态
        childHolder.check_child.setChecked(listBean.getSelected() == 0 ? false : true);
        //设置图片显示
        String uri = listBean.getImages().split("\\|")[0];
        DraweeController controller = Fresco.newDraweeControllerBuilder()
                .setUri(uri)
                .setAutoPlayAnimations(true)
                .build();
        childHolder.image_good.setController(controller);
        //子条目checkbox的点击事件
          childHolder.check_child.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                  updateChildByck(listBean);
              }
          });
         //加减的点击事件
           childHolder.text_add.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View view) {
                 updateChildByNum(listBean,true);
               }
           });
          childHolder.text_jian.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                  if (listBean.getNum() == 1) {
                      Toast.makeText(context,"数量不能再减啦!",Toast.LENGTH_SHORT).show();
                      return;
                  }
                  updateChildByNum(listBean,false);
              }
          });
        return view;
    }

    private void updateChildByNum(MyCartBean.DataBean.ListBean listBean, boolean b) {
        Map<String, String> params =new HashMap<>();
        params.put("uid", 2776 + "");
        params.put("sellerid", listBean.getSellerid() + "");
        params.put("pid", listBean.getPid() + "");
        params.put("selected", String.valueOf(listBean.getSelected()));
        if (b) {
            params.put("num", String.valueOf(listBean.getNum() + 1));
        } else {
            params.put("num", String.valueOf(listBean.getNum() - 1));
        }

        RetrofitHelper.getApiService(Api.base_url).post("product/updateCarts",params)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<String>() {
                    @Override
                    public void onCompleted() {
                        //查询
                        sp.getData(Api.base_url);
                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(String s) {

                    }
                });

    }

    /*
    * 根据子条目的ck状态
    * 调更新购物车的接口
    * */
    private void updateChildByck(MyCartBean.DataBean.ListBean listBean) {
        Map<String, String> params =new HashMap<>();
         params.put("uid","2776");
         params.put("sellerid", listBean.getSellerid() + "");
         params.put("pid", listBean.getPid() + "");
         params.put("selected", String.valueOf(listBean.getSelected()== 1 ? 0 : 1));
         params.put("num", String.valueOf(listBean.getNum()));

        RetrofitHelper.getApiService(Api.base_url).post("product/updateCarts",params)
               .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
               .subscribe(new Observer<String>() {
                   @Override
                   public void onCompleted() {
                      //查询
                       sp.getData(Api.base_url);
                   }

                   @Override
                   public void onError(Throwable e) {

                   }

                   @Override
                   public void onNext(String s) {

                   }
               });


    }

    @Override
    public boolean isChildSelectable(int i, int i1) {
        return true;
    }
       /*
       * 价格和数量的改变
       * */
    public void sendPriceAndCount() {
        //初始化数量和价格
         int count=0;
         double price=0;

        for(int i=0;i<myCartBean.getData().size();i++){
            for (int j=0;j<myCartBean.getData().get(i).getList().size();j++){
                //判断 选中的才计算价格和数量
                if(myCartBean.getData().get(i).getList().get(j).getSelected()==1){
                    count+=myCartBean.getData().get(i).getList().get(j).getNum();
                    price+=myCartBean.getData().get(i).getList().get(j).getBargainPrice() * myCartBean.getData().get(i).getList().get(j).getNum();
                }
            }
        }
        //发送...显示
        Message msg = Message.obtain();
        msg.what = 0;
        msg.obj = price;
        msg.arg1 = count;

        handler.sendMessage(msg);
    }
      /*
      * 根据全选的状态改变组和子的状态
      * 调更新接口
      * */
    public void isCheckAllChecked(boolean checked) {
        //创建集合 装所有子类
        List<MyCartBean.DataBean.ListBean> allList=new ArrayList<>();
          for(int i=0;i<myCartBean.getData().size();i++){
              myCartBean.getData().get(i).setGroupChecked(checked);
              Log.d("++++++++","++++++"+myCartBean.getData().get(i).isGroupChecked());

              for(int j=0;j<myCartBean.getData().get(i).getList().size();j++){
                  myCartBean.getData().get(i).getList().get(j).setSelected(checked ? 1:0);
                  Log.d("+++","++++++"+myCartBean.getData().get(i).getList().get(j).getSelected());
                allList.add(myCartBean.getData().get(i).getList().get(j));
              }

          }
            //更新所有数据
            updateAllhilds(allList);


    }
       /*
       * 根据全选状态更新组和子条目
       * */
    private void updateAllhilds(List<MyCartBean.DataBean.ListBean> allList) {
        //创建被观察者数组
        Observable[] observables=new Observable[allList.size()];
          //遍历数组
         for(int i=0;i<allList.size();i++){
             Map<String, String> params = new HashMap<>();
             params.put("uid", 2776 + "");
             params.put("sellerid", allList.get(i).getSellerid() + "");
             params.put("pid", allList.get(i).getPid() + "");
             params.put("selected", String.valueOf(allList.get(i).getSelected()));
             params.put("num", String.valueOf(allList.get(i).getNum()));

             Log.d("=====",allList.get(i).getSelected() + "++++++");
             observables[i]= RetrofitHelper.getApiService(Api.base_url).post("product/updateCarts",params);
         }
         Observable.merge(observables)
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
                 .subscribe(new Observer() {
                     @Override
                     public void onCompleted() {
                         //调查询接口
                         sp.getData(Api.base_url);
                     }

                     @Override
                     public void onError(Throwable e) {

                     }

                     @Override
                     public void onNext(Object o) {

                     }
                 });
           // notifyDataSetChanged();
    }


    private class GroupHolder {
        CheckBox check_group;
        TextView text_group;
    }

    private class ChildHolder {
        CheckBox check_child;
        SimpleDraweeView image_good;
        TextView text_title;
        TextView text_price;
        TextView text_jian;
        TextView text_num;
        TextView text_add;
    }

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机器学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机器学习呢? 机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机器学习的用途 机器学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用中能够表现出不同的性能和优势。目前,机器学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、流行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据中有价值的信息,以便明确客户的需求和指引企业的发展。
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机器学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机器学习呢? 机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机器学习的用途 机器学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用中能够表现出不同的性能和优势。目前,机器学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、流行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据中有价值的信息,以便明确客户的需求和指引企业的发展。
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机器学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机器学习呢? 机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机器学习的用途 机器学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用中能够表现出不同的性能和优势。目前,机器学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、流行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据中有价值的信息,以便明确客户的需求和指引企业的发展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值