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