子ラジオボタンをループして選択したインデックスでラジオボタンをチェックすることを選択する以外に、AndroidでRadioGroupの選択したインデックスを設定する方法はありますか?
注:実行時にラジオボタングループにデータを入力しています。
ラジオグループがレイアウトxmlファイルで定義されている場合、各ボタンにIDを割り当てることができます。次に、このようなボタンをチェックするだけです
radioGroup.check(R.id.myButtonId);
ラジオグループをプログラムで作成した場合(これをどのように行うかわからない...)、R.id. * idを割り当てることができるように、ラジオグループ専用の特別なレイアウトxmlファイルを作成することを検討できます。ボタンに。
実際、インデックスでラジオボタングループを設定する場合は、以下の回答をご覧ください。下記の回答をご覧ください。
質問は「選択されたインデックスを設定」と言いましたが、インデックスで設定する方法は次のとおりです。
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
........
追加情報:Googleは、インデックスの代わりにidを使用することを望んでいるようです。これは、idを使用する方がバグが少ないためです。たとえば、RadioGroupに別のUI要素がある場合、または別の開発者がRadioButtonsを並べ替える場合、インデックスは変更される可能性があり、予期したものではない可能性があります。しかし、あなたが唯一の開発者であれば、これはまったく問題ありません。
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ではなく最初の区切り線です。この例のradioButtonsは、インデックス0、2、4、6にあります。
ラジオグループからfindViewByIdを実行できます。
((RadioButton)my_radio_group.findViewById(R.id.radiobtn_veg)).setChecked(true);`
これでうまくいきました。ラジオボタンを動的に作成しました。
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内で、タグをボタングループに設定します
@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()
}