103

子ラジオボタンをループして、選択したインデックスでラジオボタンをチェックすることを選択する以外に、Android で RadioGroup の選択したインデックスを設定する方法はありますか?

注: 実行時にラジオ ボタン グループを設定しています。

4

7 に答える 7

220

ラジオ グループがレイアウト xml ファイルで定義されている場合、各ボタンに ID を割り当てることができます。次に、このようなボタンをチェックするだけです

radioGroup.check(R.id.myButtonId);

ラジオ グループをプログラムで作成した場合 (どうやってこれを行うのかさえわかりません...)、R.id.* ID を割り当てることができるように、ラジオ グループ専用の特別なレイアウト xml ファイルを作成することを検討することをお勧めします。ボタンに。

実際にラジオボタングループをインデックスで設定しようとしている場合は、以下の回答を参照してください。以下の回答を参照してください。

((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
于 2012-03-23T16:08:55.700 に答える
91

質問は「選択したインデックスを設定する」と言っていましたが、インデックスで設定する方法は次のとおりです。

((RadioButton)radioGroup.getChildAt(index)).setChecked(true);

.........

追加情報: Google はインデックスの代わりに id を使用することを望んでいるようです。たとえば、RadioGroup に別の UI 要素がある場合、または別の開発者が RadioButton の順序を変更した場合、インデックスが変更され、期待どおりにならない場合があります。しかし、あなたが唯一の開発者であれば、これでまったく問題ありません。

于 2015-02-14T23:12:10.633 に答える
6

ラジオ グループから findViewById を実行できます。

((RadioButton)my_radio_group.findViewById(R.id.radiobtn_veg)).setChecked(true);`
于 2015-09-09T05:03:39.347 に答える
5

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 にあります。

于 2016-07-19T02:53:03.220 に答える
2

これはうまくいきました、私はラジオボタンを動的に作成しました

  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 );
于 2016-11-15T11:19:31.963 に答える