EventBus的使用 点击商家的时候商品选中

//第一步
注册
EventBus的依赖

  implementation 'org.greenrobot:eventbus:3.1.1'

//注册 注意需要在 寻找控件的方法里面去写

        EventBus.getDefault().register(this);
      解绑注册
//第二个是选中的状态
       @Override
    public void onDestroy() {
        super.onDestroy();
        iPresenter.Deatch(this);
        EventBus.getDefault().unregister(this);
    }

在这里插入图片描述

//第三步是创建方法 拿取点击的下标、选中的状态

public class GroupEvent {
     private int adapterEvent;
     private boolean isCheck;

    public int getAdapterEvent() {
        return adapterEvent;
    }

    public void setAdapterEvent(int adapterEvent) {
        this.adapterEvent = adapterEvent;
    }

    public boolean isCheck() {
        return isCheck;
    }

    public void setCheck(boolean check) {
        isCheck = check;
    }

    public GroupEvent(int adapterEvent, boolean isCheck) {
        this.adapterEvent = adapterEvent;
        this.isCheck = isCheck;
    }

//第四步在商家的Activty中去去写方法

//选中商家的时候
    @Subscribe
    public void onGroupEvent(GroupEvent event){
        int adapterEvent = event.getAdapterEvent();
        Log.i("aa",adapterEvent+"");
        //在商家的Activty中去拿去数据
        List<ShowBean.DataBean> data = recycleYH_adapter.getData();
        
        ShowBean.DataBean dataBean = data.get(adapterEvent);
        //设置商家的选中状态
        dataBean.setTwo(event.isCheck());
        List<ShowBean.DataBean.SpusBean> spus = dataBean.getSpus();
        for (int i=0;i<spus.size();i++){
            ShowBean.DataBean.SpusBean spusBean = spus.get(i);
            spusBean.setThree(event.isCheck());
        }
        recycleYH_adapter.notifyDataSetChanged();
        //计算总价的方法
        CountPrice();
    }

//在商家的Adapter中 设置方法

@Override
    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
        myViewHolder.sj_name.setText(data.get(i).getName());
        List<ShowBean.DataBean.SpusBean> spus = data.get(i).getSpus();
        myViewHolder.checj_box_yhs.setChecked(data.get(i).getTwo());
        myViewHolder.spin_recycle.setLayoutManager(new LinearLayoutManager(context,LinearLayoutManager.VERTICAL,false));



        ShowBean.DataBean dataBean = data.get(i);
        //就是这个
        myViewHolder.bind(dataBean);

    }

//在寻找商家的控件中

 public class MyViewHolder extends RecyclerView.ViewHolder {
        private final CheckBox checj_box_yhs;
        private final TextView sj_name;
        private final RecyclerView spin_recycle;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            checj_box_yhs = itemView.findViewById(R.id.checj_box_yhs);
            sj_name = itemView.findViewById(R.id.sj_name);
            spin_recycle = itemView.findViewById(R.id.spin_recycle);


        }

        public void bind(ShowBean.DataBean dataBean) {
            recycleSP_adapter = new RecycleSP_Adapter(context, dataBean.getSpus());

          spin_recycle.setAdapter(recycleSP_adapter);
            checj_box_yhs.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    EventBus.getDefault().post(new GroupEvent(getAdapterPosition(),isChecked));
                }
            });

        }
    }
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值