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

本文介绍了如何在Android项目中使用EventBus进行组件间通信。包括依赖注册、解绑、事件对象创建及传递等关键步骤,并展示了如何在Activity和Adapter中实现事件监听与响应。

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

//第一步
注册
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));
                }
            });

        }
    }
内容概要:本文深入探讨了软件项目配置管理在汽车开发领域的应用及其重要性,强调配置管理不仅是版本控制,更是涵盖标识、追溯、结构化等多方面的深度管控。文章通过对比机械产品和软件产品的标签管理,揭示了软件配置管理的独特挑战。配置管理构建了一个“网”状体系,确保软件产品在复杂多变的开发环境中保持稳定和有序。文中还讨论了配置管理在实际工作中的困境,如命名混乱、文档更新不及时、发布流程冗长等问题,并提出了通过结构可视化、信息同源化、痕迹自动化和基线灵活化等手段优化配置管理的具体方法。 适合人群:具备一定软件开发和项目管理经验的工程师及项目经理,尤其是从事汽车电子软件开发的相关人员。 使用场景及目标:①理解配置管理在汽车软件项目中的核心作用;②学习如何通过工具链(如Polarion、JIRA、飞书等)优化配置管理流程;③掌握结构可视化、信息同源化、痕迹自动化和基线灵活化等关键技术手段,提升项目管理水平。 其他说明:配置管理不仅是技术问题,更涉及到项目管理和团队协作。文中强调了工具链的应用和优化的重要性,但同时也指出,工具本身并不能解决所有问题,关键在于如何合理使用工具并不断优化管理流程。文章呼吁读者成为长期主义者,相信时间的力量,持续改进配置管理工作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值