-------------------------------------------- cb_01的点击事件-------------------------------------------------------
cb_01.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(cb_01.isChecked()){
for (int i = 0; i <news.getData().size() ; i++) {
news.getData().get(i).setOutchecked(true);
for (int j = 0; j <news.getData().get(i).getList().size() ; j++) {
news.getData().get(i).getList().get(j).setInnerchecked(true);
}
}
}else {
for (int i = 0; i <news.getData().size() ; i++) {
news.getData().get(i).setOutchecked(false);
for (int j = 0; j <news.getData().get(i).getList().size() ; j++) {
news.getData().get(i).getList().get(j).setInnerchecked(false);
}
}
}
//总价的方法
initzong();
adapter.notifyDataSetChanged();
}
});
-----------------------------------------------------------------外层适配器------------------------------------------------------
holder.cb_02.setChecked(list.get(position).isOutchecked());
holder.cb_02.setText(list.get(position).getSellerName());
--------------------------------------------------条目控制商家-----------inneradapter--------------
//判断条目复选框的状态
holder.cb_03.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//内部状态
list.get(position).setInnerchecked(holder.cb_03.isChecked());
onclickchangelisten.onchecked(holder.getLayoutPosition(),holder.cb_03.isChecked());
}
});
private onclickchangelisten onclickchangelisten;
//向外提供方法
public void setOnclickchangelisten(onclickchangelisten onclickchangelisten){
this.onclickchangelisten=onclickchangelisten;
}
//条目的回调方法
public interface onclickchangelisten{
void onchecked(int layoutPosition, boolean checked);
}
--------------------------------------------------条目《===》商家----------outdapter--------------
holder.cb_02.setOnClickListener(null);
//商家选中控制里面的子条目
holder.cb_02.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean ischecked = holder.cb_02.isChecked();//定义商家的选中状态
list.get(position).setOutchecked(ischecked);
if (ischecked){
for (int i = 0; i < list.get(holder.getLayoutPosition()).getList().size(); i++) {
list.get(holder.getLayoutPosition()).getList().get(i).setInnerchecked(true);
}
}else{
for (int i = 0; i < list.get(holder.getLayoutPosition()).getList().size(); i++) {
list.get(holder.getLayoutPosition()).getList().get(i).setInnerchecked(false);
}
}
onclickchangelisten.onitemchecked(holder.getLayoutPosition(),ischecked);
}
});
//获取里层条目选中状态
innerAdapter.setOnclickchangelisten(new innerAdapter.onclickchangelisten() {
@Override
public void onchecked(int layoutPosition, boolean checked) {
//定义一个默认值
boolean b=true;
for (int i = 0; i <list.get(holder.getLayoutPosition()).getList().size() ; i++) {
boolean innerchecked = list.get(holder.getLayoutPosition()).getList().get(i).isInnerchecked();
b=(b&innerchecked);
}
//设置给商家
holder.cb_02.setChecked(b);
//设置给外层条目
list.get(position).setOutchecked(b);
onclickchangelisten.onchecked(holder.getLayoutPosition(),checked);
}
});
private onclickchangelisten onclickchangelisten;
//向外提供方法
public void setOnclickchangelisten(onclickchangelisten onclickchangelisten){
this.onclickchangelisten=onclickchangelisten;
}
//全选的商家接口回调
public interface onclickchangelisten{
void onchecked(int layoutPosition, boolean checked);//里层控制商家
void onitemchecked(int layoutPosition, boolean ischecked);//商家控制里层
}
---------------------------------------------------maintiivity-------------------------------------
//全选 来控制商家跟条目
adapter.setOnclickchangelisten(new outAdapter.onclickchangelisten() {
@Override
public void onchecked(int layoutPosition, boolean checked) {
boolean b=true;
for (int i = 0; i < news.getData().size(); i++) {
boolean outchecked = news.getData().get(i).isOutchecked();
for (int j = 0; j < news.getData().get(i).getList().size(); j++) {
boolean innerchecked = news.getData().get(i).getList().get(j).isInnerchecked();
b=(b&outchecked&innerchecked);
}
}
cb_01.setChecked(b);
adapter.notifyDataSetChanged();
}
@Override
public void onitemchecked(int layoutPosition, boolean ischecked) {
//设置外层的选中状态
news.getData().get(layoutPosition).setOutchecked(ischecked);
boolean b=true;
for (int i = 0; i < news.getData().size(); i++) {
boolean outchecked = news.getData().get(i).isOutchecked();
for (int j = 0; j < news.getData().get(i).getList().size(); j++) {
boolean innerchecked = news.getData().get(i).getList().get(j).isInnerchecked();
b=(b&outchecked&innerchecked);
}
}
cb_01.setChecked(b);
adapter.notifyDataSetChanged();
}
});