如何用代码来实现radioButton选中后在取消呢?
我现在有两种方法可以实现radioButton的选中与取消,由于我的radioButton是动态生成的,当然静态的radioButton也可以用的。
一、第一种
1、先定义一个Boolean的变量
final boolean[] isselectall = {false};
2、给radioButton定义一个点击事件的,之后直接在方法里面写个判断就可以了
radioButton1.setOnClickListener(new RadioButton.OnClickListener() {
@Override
public void onClick(View v) {
if(isselectall[0]){
radioButton.setChecked(false);
isselectall[0]=false;
}else{
radioButton.setChecked(true);
isselectall[0]=true;
}
}
});
如果二个radioButton以上的时候,用这种方法用户体验会不太好,为什么这么说呢?当点击第一个radioButton的时候, isselectall[0] 的值会设置为true,当点击第二个radioButton的时候,当前 isselectall[0] 的值为true,他会直接到if里面去,也就相当于没有没有设置radioButton,当点击第二次的时候才会设置为true,给人的感觉就是需要点击两次radioButton才会出效果
二、第二种
第二种方式可以说是由第一个方式的演变来的,主要思路就是给每个radioButton添加一个Boolean的变量,用于记录当前radioButton的状态。
1、先定义一个Boolean的变量
final boolean[] isselectall = {false};
2、定义一个Map集合,用于储存每个radioButton的状态
private Map<Integer,Boolean> mapName=new HashMap<>();
3、给集合里面添加数据
mapName.put(“这个键可以自定义,可以直接使用radioButton的id作为键”,false);
4、给radioButton定义一个点击事件的
radioButton1.setOnClickListener(new RadioButton.OnClickListener() {
@Override
public void onClick(View v) {
//获取当前radioButton1的id
int id =radioButton1.getId();
if(mapName.get(id)){
radioButton1.setChecked(false);
isselectall[0]=false;
}else{
radioButton1.setChecked(true);
isselectall[0]=true;
}
//设置当前radioButton的状态
if(isselectall[0]){
mapName.put(id,true);
}else{
mapName.put(id,false);
}
}
});
我也是个初学者,有什么不对的地方,希望可以指出来,谢谢!!