多选按钮(CheckBox)
这个控件和 前几天的控件使用方法上是一样的。
主要是要区别在于怎么知道用户选的是哪一个按钮和,到底是勾选还是取消。
第一个问题我们在监听器里面可以解决
class OnBoxListener implements OnClickListener{
public void onClick(View v) {
if(v.getId()==R.id.eatId){ //我们可以使用 View 的对象调用getid()这个方法,获得现在所使用监听器的对象的ID ,然后和R文件里面的ID 所比较。就可以解决问题
System.out.println("eat");
}
else if(v.getId()==R.id.sleepId){
System.out.println("sleep");
}
else if(v.getId()==R.id.dotaId){
System.out.println("dota");
}}
第二个问题我们可以使用一个一个CheckBox的一个函数
public void onClick(View v) {
CheckBox box=(CheckBox)v;//这里我们先把view的对象V 向下转型
if(box.getId()==R.id.eatId){
System.out.println("eat");
}
else if(box.getId()==R.id.sleepId){
System.out.println("sleep");
}
else if(box.getId()==R.id.dotaId){
System.out.println("dota");
}
if(box.isChecked()){//这里我们调用 ischecked 这个函数,当选中的时候这个函数会返回ture。否flase
System.out.println("checked");
}
else{System.out.println("unchecked");}
}
上面这些都是使用OnClickListener的监听器。下面换OncheckedChangeListener监听器来实现同样的功能
OnBoxListener Listener1=new OnBoxListener();
eatBox.setOnCheckedChangeListener(Listener1);
sleepBox.setOnCheckedChangeListener(Listener1);
dotaBox.setOnCheckedChangeListener(Listener1);
class OnBoxListener implements OnCheckedChangeListener{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {//这个监听器自带的函数,的两个参数和前面OnclickListener来说比较方便,他已经帮你传递了两个参数,第一个是CompoundButton,这个相当于是checkbox的子类。
if(buttonView.getId()==R.id.eatId){
System.out.println("eat");
}
else if(buttonView.getId()==R.id.sleepId){
System.out.println("sleep");
}
else if(buttonView.getId()==R.id.dotaId){
System.out.println("dota");
}
if(isChecked){//这里和前面有一点不一样应为 已经帮你传递参数了,不需要使用方法
System.out.println("checked");
}
else{System.out.println("unchecked");}}
现在再说一个函数就是让你的 多选框变成选中状态,或者取消选中状态。
如 eatBox.setChecked(ture):就是选中状态如果是flase就是 取消选中状态。