我动态添加了单选按钮,如下所示。
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");
点击时我有一个按钮调用一个方法,动态添加的单选按钮的选定项目(文本)应该传递给该方法。如何为动态添加的单选按钮获取所选的单选按钮文本?
答案 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();
希望它有所帮助。