มีวิธีตั้งค่าดัชนีที่เลือกของ RadioGroup ใน Android หรือไม่นอกเหนือจากการวนลูปผ่านปุ่มวิทยุลูกและเลือกตรวจสอบปุ่มตัวเลือกที่ดัชนีที่เลือก
หมายเหตุ: ฉันกำลังเติมกลุ่มปุ่มตัวเลือกในขณะทำงาน
มีวิธีตั้งค่าดัชนีที่เลือกของ RadioGroup ใน Android หรือไม่นอกเหนือจากการวนลูปผ่านปุ่มวิทยุลูกและเลือกตรวจสอบปุ่มตัวเลือกที่ดัชนีที่เลือก
หมายเหตุ: ฉันกำลังเติมกลุ่มปุ่มตัวเลือกในขณะทำงาน
คำตอบ:
หากกำหนดกลุ่มวิทยุของคุณในไฟล์ xml เค้าโครงแต่ละปุ่มสามารถกำหนด id ได้ จากนั้นคุณก็ตรวจสอบปุ่มเช่นนี้
radioGroup.check(R.id.myButtonId);
หากคุณสร้างกลุ่มวิทยุโดยใช้โปรแกรม (ฉันไม่แน่ใจด้วยซ้ำว่าคุณทำสิ่งนี้อย่างไร ... ) คุณอาจต้องการพิจารณาสร้างไฟล์ xml เลย์เอาต์พิเศษเฉพาะสำหรับกลุ่มวิทยุเพื่อให้คุณสามารถกำหนด Rid ไปที่ปุ่มต่างๆ
โปรดดูคำตอบด้านล่างหากคุณต้องการตั้งค่ากลุ่มปุ่มตัวเลือกตามดัชนีโปรดดูคำตอบด้านล่าง
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
check
วิธีการได้
คำถามกล่าวว่า "set selected INDEX" ต่อไปนี้เป็นวิธีตั้งค่าตามดัชนี:
((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
........
ข้อมูลเพิ่มเติม: ดูเหมือนว่า Google ต้องการให้คุณใช้ id แทนดัชนีเนื่องจากการใช้ id เป็นการพิสูจน์ข้อบกพร่องมากกว่า ตัวอย่างเช่นหากคุณมีองค์ประกอบ UI อื่นใน RadioGroup ของคุณหรือหากนักพัฒนารายอื่นสั่งซื้อปุ่ม 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()
}
การใช้ Kotlin คุณสามารถทำได้โดย
(radio_group_id.getChildAt(index) as RadioButton).isChecked = true
หรือ
radio_group_id.check(R.id.radio_button_id
)