除了循环遍历子单选按钮并选择检查选定索引处的单选按钮之外,是否有办法设置android中RadioGroup的选定索引?
注意:我在运行时填充单选按钮组。
除了循环遍历子单选按钮并选择检查选定索引处的单选按钮之外,是否有办法设置android中RadioGroup的选定索引?
注意:我在运行时填充单选按钮组。
Answers:
如果您的无线电组在布局xml文件中定义,则可以为每个按钮分配一个ID。然后您只需检查一个这样的按钮
radioGroup.check(R.id.myButtonId);
如果您以编程方式创建了无线电组(我什至不知道如何执行此操作...),则可能要考虑为无线电组创建一个特殊的布局xml文件,以便可以分配R.id. * id按钮。
如果您实际上是想按索引设置单选按钮组,请参阅下面的答案。
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
check
方法的参数。
问题说“设置选定的INDEX”,这是如何通过索引设置它:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
........
附加信息:似乎Google希望您使用id而不是索引,因为使用id更能证明错误。例如,如果您的RadioGroup中有另一个UI元素,或者另一个开发人员重新排序了RadioButton,则索引可能会更改,而不是您所期望的。但是,如果您是唯一的开发人员,那完全没问题。
Siavash的答案是正确的:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
但是请注意,radioGroup可以包含除radioButtons之外的其他视图-像本示例一样,每个选项下都包含一条淡淡的线。
<RadioGroup
android:id="@+id/radioKb"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/kb1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:button="@null"
android:drawableRight="@android:drawable/btn_radio"
android:text="Onscreen - ABC" />
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#33000000" />
<RadioButton
android:id="@+id/kb2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:button="@null"
android:drawableRight="@android:drawable/btn_radio"
android:text="Onscreen - Qwerty" />
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#33000000" />
<RadioButton
android:id="@+id/kb3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:button="@null"
android:drawableRight="@android:drawable/btn_radio"
android:text="Standard softkey" />
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#33000000" />
<RadioButton
android:id="@+id/kb4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:button="@null"
android:drawableRight="@android:drawable/btn_radio"
android:text="Physical keyboard" />
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#33000000" />
</RadioGroup>
例如,在这种情况下,使用索引1将产生错误。索引1处的项目是第一行分隔符-不是radioButton。本例中的单选按钮位于索引0、2、4、6。
这对我有用,我通过以下方式动态创建了单选按钮:
private void createRadioButton() {
RadioButton[] rb = new RadioButton[5];
RadioGroup.LayoutParams layoutParams = new RadioGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
1.0f);
radioGroup.setOrientation(RadioGroup.HORIZONTAL);
for (int ID = 0; ID < 5; ID++) {
rb[ID] = new RadioButton(this);
rb[ID].setLayoutParams(layoutParams);
rb[ID].setText("Button_Text");
radioGroup.addView(rb[ID]); //the RadioButtons are added to the radioGroup instead of the layout
}
}
现在,使用
int radio_button_Id = radioGroup.getChildAt(index).getId();
radioGroup.check( radio_button_Id );
在onBindViewHolder内部,将标签设置为Button Group
@Override
public void onBindViewHolder(final CustomViewHolder holder, final int position) {
...
holder.ButtonGroup.setTag(position);
}
并在ViewHolder中
ButtonGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {
...
int id = radioGroup.getCheckedRadioButtonId();
RadioButton radioButton = (RadioButton) radioGroup.findViewById(id);
int clickedPos = (Integer) radioGroup.getTag();
packageModelList.get(clickedPos).getPoll_quest()
}