2011-05-13 83 views
2

请帮我在这一个,我试着去产生2个单选按钮在for循环中动态地根据啥子我希望用户输入有单选按钮像Android的 - 动态单选按钮问题

*电台Button1的* RadioButton2

*电台Button1的* RadioButton2

*电台Button1的* RadioButton2

*电台Button1的* RadioButton2

。 。 。

等等..取决于循环!

这是我的代码中的代码片段,它只为一行中的2个单选按钮工作,但是当我增加count值时。 。我得到了已经有父母的radiogroup孩子的android运行时错误。 :S

List<RadioGroup> allradioGroup = new ArrayList<RadioGroup>(); 
RadioGroup radioGroup; 

List<RadioButton> allRadio = new ArrayList<RadioButton>(); 
RadioButton radioButton; 

     for (int i = 0; i < count; i++) { 

     /* Defining RadioGroup */ 
     radioGroup = new RadioGroup(this); 
     radioGroup.setOrientation(RadioGroup.HORIZONTAL); 

     allradioGroup.add(radioGroup); 


     /* Displaying Radio Buttons */ 
     for (int j = 0; j < 2; j++) { 
      radioButton = new RadioButton(this); 
      radioButton.setTextColor(getResources().getColor(R.color.grey)); 
      radioButton.setId((j + 100)); 

      allRadio.add(radioButton); 

      if (allRadio.get(j).getId() == 100) { 
       radioButton.setText("private"); 
      } else if (allRadio.get(j).getId() == 101) { 
       radioButton.setText("public"); 
      } 

       allradioGroup.get(i).addView(allRadio.get(j), j, 
         layoutParams); 
     } 

     linear.addView(allradioGroup.get(i)); 

    } 

请帮助。谢谢

回答

0

你的问题是这样一行:“allradioGroup.get(i).addView(allRadio.get(j),j,layoutParams);”

当您创建第二行时,参数j将在0-1范围内。你正在尝试使用allRadio.get(j),它在第二次运行时将返回你创建的第一个单选按钮(它已经有一个父按钮)。要解决此问题,请将“j”替换为:“i * 2 + j”。这应该解决它。

+0

Ohhhhh,Yesssss我的坏人 非常感谢Frenkenstain im将此标记为正确答案它像一个魅力一样工作感谢很多 – 2011-05-13 12:42:12

+0

您能否也请帮助我从每行中的每个单选按钮获取值。 。这可以帮助我很多..(: – 2011-05-13 12:43:31

+0

)你有一个列表中的所有RadioGroups,你可以通过这个循环: 'for(int i = 0; i jorgenfb 2011-05-13 12:57:17