子ラジオボタンをループして、選択したインデックスでラジオボタンをチェックすることを選択する以外に、Android で RadioGroup の選択したインデックスを設定する方法はありますか?
注: 実行時にラジオ ボタン グループを設定しています。
子ラジオボタンをループして、選択したインデックスでラジオボタンをチェックすることを選択する以外に、Android で RadioGroup の選択したインデックスを設定する方法はありますか?
注: 実行時にラジオ ボタン グループを設定しています。
ラジオ グループがレイアウト xml ファイルで定義されている場合、各ボタンに ID を割り当てることができます。次に、このようなボタンをチェックするだけです
radioGroup.check(R.id.myButtonId);
ラジオ グループをプログラムで作成した場合 (どうやってこれを行うのかさえわかりません...)、R.id.* ID を割り当てることができるように、ラジオ グループ専用の特別なレイアウト xml ファイルを作成することを検討することをお勧めします。ボタンに。
実際にラジオボタングループをインデックスで設定しようとしている場合は、以下の回答を参照してください。以下の回答を参照してください。
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
質問は「選択したインデックスを設定する」と言っていましたが、インデックスで設定する方法は次のとおりです。
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
.........
追加情報: Google はインデックスの代わりに id を使用することを望んでいるようです。たとえば、RadioGroup に別の UI 要素がある場合、または別の開発者が RadioButton の順序を変更した場合、インデックスが変更され、期待どおりにならない場合があります。しかし、あなたが唯一の開発者であれば、これでまったく問題ありません。
ラジオ グループから findViewById を実行できます。
((RadioButton)my_radio_group.findViewById(R.id.radiobtn_veg)).setChecked(true);`
Siavashの答えは正しいです:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
ただし、radioGroup には radioButton 以外のビューを含めることができることに注意してください。この例のように、各選択肢の下に薄い線が含まれています。
<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 ではなく、最初の区切り線です。この例の 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 );