如何获取动态添加的单选按钮的选定索引

时间:2016-07-28 07:10:50

标签: android

我动态添加了单选按钮,如下所示。

Optional<String> dupe = Stream.of(allowedServicesId, notAllowedServicesId, replaceServiceId)
        .flatMap(List::stream)
        .filter(s -> !set.add(s))
        .findFirst();
if (dupe.isPresent())
  throw new Exception(dupe + " was duplicated");

点击时我有一个按钮调用一个方法,动态添加的单选按钮的选定项目(文本)应该传递给该方法。如何为动态添加的单选按钮获取所选的单选按钮文本?

5 个答案:

答案 0 :(得分:1)

在向无线电组添加按钮时设置单选按钮ID非常重要。

RadioButton rb = new RadioButton(context);
rb.setText(option);
rb.setId(rb.hashCode());
radioGroup.addView(rb);
radioGroup.setOnCheckedChangeListener(mCheckedListner);

现在,在您的点击监听器中检查唯一ID。

private RadioGroup.OnCheckedChangeListener mCheckedListner = new RadioGroup.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        JSONArray actionArray = new JSONArray();
        if(group.findViewById(checkedId)!=null) {
            RadioButton rb = ((RadioButton) group.findViewById(checkedId)).getText();
//Your Code here
                }
            }
        }
    };

答案 1 :(得分:0)

您已将RadioButtons中动态创建的所有radioButtons array存储起来 因此,如果您想知道选择了哪个单选按钮,您可以循环所有这些数组并检查每个RadioButton

for (int i = 0; i< radioButtons.size(); i++) {
    if(radioButtons[i].isChecked()){
         // selected radio button is here
         String text = radioButtons[i].getText();
    }
}

答案 2 :(得分:0)

首先,你必须得到所有孩子的观点。然后检查此视图是否为RadioButton。最后检查选中了哪个按钮。

int childcount = typeLayout.getChildCount();
for (int i=0; i < childcount; i++){
      View view = typeLayout.getChildAt(i);
      if (view instanceof RadioButton) {
           if(((RadioButton)view).isChecked()) {
                RadioButton yourCheckedRadioButton = (RadioButton) typeLayout.getChildAt(i); // this is your checked RadioButton
           }
      }
}

答案 3 :(得分:0)

@Komali Shirumavilla

将这些动态单选按钮添加到无线电组 所以在代码中添加以下行

RadioGroup rg = new RadioGroup(this); //create the RadioGroup
rg.setOrientation(RadioGroup.HORIZONTAL);//or RadioGroup.VERTICAL
for (int i = 0; i< typeArrayList.size(); i++) {
radioButtons[i] = new RadioButton(MainActivity.this);
radioButtons[i].setId(i);
radioButtons[i].setText(typeArrayList.get(i).toString());
if(i==0) {
    radioButtons[i].setChecked(true);
}
rg.addView(radioButtons[i]);  // add dynamic radio buttons to radio group
}
typeLayout.addView(rg); // add radio group to view

现在在setOnCheckedChangeListener

上设置RadioGroup
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch(checkedId) {
                    RadioButton btn = (RadioButton)findViewById(checkedId);
                    Log.d("Your selected radio button id",btn.getText());
                }
            }
        });

答案 4 :(得分:-1)

使用标记可以轻松实现。

添加RadioButton时,设置特定对象的标记。在您的情况下,将标记设置为单选按钮的文本

radioButtons[i].setTag(typeArrayList.get(i).toString());

这样,所有单选按钮都会将与其关联的文字作为标记。

现在每当选择一个特定的单选按钮时,只需获取一个标签,该标签将为您提供与之相关的文本。

String text = (String) selectedRadioButton.getTag();

希望它有所帮助。