用onclicklistener实现多选按钮的全选功能
主要用到了三个方法:
1:.getId,找到控件的Id,类型为int型;
2:.isChecked,代表控件的状态为 已被选中 类型为布尔型;
3:setChecked,设置控件的状态,也是布尔型,可以传入一个参数,true为该控件当前状态已被选中,false代表未被选中
其实应该还有更简单的方法,有更简单的监听器,但是目前只学了onclicklistener监听器,以后学到新的再补充吧
好了,上代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fist);
And and=new And();
both=(CheckBox)findViewById(R.id.both);
eat=(CheckBox)findViewById(R.id.eat);
sleep=(CheckBox)findViewById(R.id.sleep);
dota=(CheckBox)findViewById(R.id.dota);
both.setOnClickListener(and);
eat.setOnClickListener(and);
sleep.setOnClickListener(and);
dota.setOnClickListener(and);
}
class And implements OnClickListener{
public void onClick(View v) {
CheckBox box=(CheckBox)v;
switch(box.getId()){
case R.id.both:
if(both.isChecked()){
both.setChecked(true);
eat.setChecked(true);
sleep.setChecked(true);
dota.setChecked(true);
}
else{
both.setChecked(false);
eat.setChecked(false);
sleep.setChecked(false);
dota.setChecked(false);
}
case R.id.eat:
both.setChecked(false);
if(eat.isChecked()){
eat.setChecked(true);
}
else eat.setChecked(false);
case R.id.sleep:
both.setChecked(false);
if(sleep.isChecked()){
sleep.setChecked(true);
}
else sleep.setChecked(false);
case R.id.dota:
both.setChecked(false);
if(dota.isChecked()){
dota.setChecked(true);
}
else dota.setChecked(false);
}
if(eat.isChecked()&&sleep.isChecked()&&dota.isChecked())
{
both.setChecked(true);
}
else both.setChecked(false);
}
}
}