Android RadioGroupの選択したインデックスを設定します


94

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

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

回答:


201

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

radioGroup.check(R.id.myButtonId);

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

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

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

2
こんにちは、私はこのコードを使用してプログラムでそれらを作成しました:for(int i = 0; i <lookupTypes.size(); i ++){// RadioButton rbt = new RadioButton(this); //、null、// R.style。 RadioGroupItem); RadioButton rbt =(RadioButton)getLayoutInflater()。inflate(R.layout.tmpltradiobutton、null); rbt.setId(i); rbt.setText(lookupTypes.get(i).getValue()); rbt.setTag(lookupTypes.get(i)); rbtnGroup.addView(rbt); }
ハッサンモクダッド

それらのIDをlookupTypesのインデックスに設定しているので、そのインデックスをcheckメソッドの引数として使用できます。
jjm

この回答は、質問者がすでに述べたことを文字通りもう一度説明するだけです。他の回答は、インデックスによる選択方法を正しく伝えるため、受け入れられた回答である必要があります。
Lassi Kinnunen 2015年

@LassiKinnunen私はこの回答への賛成票の数が人々がそれから必要なものを得ていることを示唆しているように感じます...それは、他の回答が尋ねられた質問に対してより正しいということは正しいです:-/
jjm

2
正直なところ、これが私の最高投票数のSOの答えであることは少し恥ずかしいです。
jjm 2015年

86

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

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

........

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


このコードを説明できますか、それは正しい答えです。
rfornal 2015

1
@rfornalこのコードを使用すると、ビューID(R.id.radioButton1など)ではなく、INDEXでラジオボタンを取得でき、インデックスをビューIDに変換するためにルックアップテーブルを実装する必要がなくなります。
Siavash 2015

5

シアバシュの答えは正しいです:

((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ではなく、最初の区切り線です。この例のradioButtonは、インデックス0、2、4、6にあります。


3

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

((RadioButton)my_radio_group.findViewById(R.id.radiobtn_veg)).setChecked(true);`

1

これは私のために働きました、私はラジオボタンを動的に作成しました

  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 );

0

onBindViewHolder内でタグをボタングループに設定します

@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()
    }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.