자식 라디오 버튼을 반복하고 선택한 색인에서 라디오 버튼을 확인하는 것 외에 Android에서 RadioGroup의 선택한 색인을 설정하는 방법이 있습니까?
참고 : 런타임에 라디오 버튼 그룹을 채우고 있습니다.
답변:
라디오 그룹이 레이아웃 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를 사용하기를 원하는 것 같습니다. 예를 들어 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이 아닌 첫 번째 구분선입니다. 이 예제의 radioButtons는 인덱스 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 내부에서 태그를 버튼 그룹으로 설정합니다.
@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()
}