Android动态radiobuttons id

时间:2012-07-31 12:28:13

标签: android user-interface dynamic radio-button

我正在创建RadioButton的数字(计数)。我无法使用RadioGroup,因为我需要RadioButton旁边的Button,每个TableRow。然而,与所有RadioButton一样,一次只能选择一个onCheckedChanged。我想我可以设置id,并在rb = new RadioButton[count]; For-loop.... rb[i] = new RadioButton(this); rb[i].setId(5000 + i); rb[i].setOnCheckedChangeListener(this); 上读取它,将你点击的所有内容改为false。

 
onCheckedChanged

@Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { for (int i = 0; i < count; i++) { if (buttonView.getId() == 5000 + i) { // Its the one } else { // Its not the one RadioButton rb = (RadioButton) findViewById((5000 + count)); rb.setChecked(false); } } }

RadioButton

我会抓住正确的.setChecked(false),但是当我尝试NullPointerException时,它会给我一个{{1}},我不明白为什么。

2 个答案:

答案 0 :(得分:1)

您正在为RadioButtons的{​​{1}}设置ID 50005000 + (count - 1)RadioButton数组的大小为count,但ID为{ {1}}因为你从count - 1(?!?)开始循环。在0子句中,您要查找布局中不存在的标识为else的{​​{1}},以便最终得到空引用。

编辑:

模拟RadioButton的代码应如下所示:

5000 + count循环中,您构建了RadioGroup

for

其中RadioButtons是一个侦听器实例:

rb[i].setOnCheckedChangeListener(checkListener);
//...

答案 1 :(得分:0)

这显示NullPointerException,因为它没有获取已检查的RadioButton的id。而不是使用isCheked()方法来检查天气radiobutton是否被检查。试试这个

  public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
 {       
    for (int i = 0; i < count; i++)
  {
    if (buttonView.isChecked())
    {
        // perform your task here
    }
    else
    {
        // Do something here.........
    }
}

}

希望这有助于:)