public class MainActivity extends ActionBarActivity {
private CheckBox eatBox;
private CheckBox sleepBox;
private CheckBox shopBox;
private CheckBox all;
private LinearLayout mCheckedLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
eatBox = (CheckBox)findViewById(R.id.eat);
sleepBox = (CheckBox)findViewById(R.id.sleep);
shopBox = (CheckBox)findViewById(R.id.shop);
all = (CheckBox)findViewById(R.id.all);
mCheckedLayout = (LinearLayout)findViewById(R.id.checked);
// BoxClickListener listener = new BoxClickListener();
clickBoxCheckListener listener = new clickBoxCheckListener();
eatBox.setOnCheckedChangeListener(listener);
sleepBox.setOnCheckedChangeListener(listener);
shopBox.setOnCheckedChangeListener(listener);
all.setOnCheckedChangeListener(listener);
}
class clickBoxCheckListener implements OnCheckedChangeListener{
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if(buttonView.getId() == R.id.eat){
System.out.println("eat");
}else if(buttonView.getId() == R.id.sleep){
System.out.println("sleep");
}else if(buttonView.getId() == R.id.shop){
System.out.println("shop");
}else if(buttonView.getId() == R.id.all){
}
if(isChecked == true && buttonView.getId() == R.id.all){
for(int i = 0;i < mCheckedLayout.getChildCount();i++){
CheckBox cb = (CheckBox)mCheckedLayout.getChildAt(i);
cb.setChecked(true);
}
}else if(isChecked == false && buttonView.getId() == R.id.all){
for(int i = 0;i < mCheckedLayout.getChildCount();i++){
CheckBox cb = (CheckBox)mCheckedLayout.getChildAt(i);
cb.setChecked(false);
}
System.out.println("enchecked");
}
}
}
// class BoxClickListener implements android.view.View.OnClickListener{
//
// @Override
// public void onClick(View v) {
// CheckBox cb = (CheckBox)v;
// if(cb.getId() == R.id.eat){
// System.out.println("eat");
// }else if(cb.getId() == R.id.sleep){
// System.out.println("sleep");
// }else if(cb.getId() == R.id.shop){
// System.out.println("shop");
// }
// if(cb.isChecked()){
// System.out.println("checked");
// }else{
// System.out.println("unchecked");
// }
// }
// }
}
OnClickListener将View向下转型,通过ID判断是哪个CheckBox,OnClickListener只要勾选框有变化就会触发,无论是选中还是取消选中。
OnCheckedChangeListener,CompoundButton 即当前多选框的选项,当勾选的状态发生改变该方法才会被触发。