Set selected index of an Android RadioGroup

前端 未结 7 1048
予麋鹿
予麋鹿 2021-02-01 11:52

Is there a way to set the selected index of a RadioGroup in android, other than looping through the child radiobuttons and selecting checking the radio button at the selected in

相关标签:
7条回答
  • 2021-02-01 12:07

    This Worked For me, I created radio button dynamically by

      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
        }
    }
    

    Now Check a button using,

    int radio_button_Id = radioGroup.getChildAt(index).getId();
    
    radioGroup.check( radio_button_Id );
    
    0 讨论(0)
  • 2021-02-01 12:10

    Siavash's answer is correct:

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

    But be aware that a radioGroup can contain views other than radioButtons -- like this example that includes a faint line under each choice.

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

    In this case using an index of 1, for example, would generate an error. The item at index 1 is the first separator line -- not a radioButton. The radioButtons in this example are at indexes 0, 2, 4, 6.

    0 讨论(0)
  • 2021-02-01 12:15

    If your radio group is defined in a layout xml file, each button can be assigned an id. Then you just check a button like this

    radioGroup.check(R.id.myButtonId);
    

    If you created your radio group programmatically (I'm not even sure how you do this...), you might want to consider creating a special layout xml file just for the radio group so that you can assign R.id.* ids to the buttons.

    Please see the answer below if you are, in fact, looking to set the radio button group by index, see the answer below.

    ((RadioButton)radioGroup.getChildAt(index)).setChecked(true);
    
    0 讨论(0)
  • 2021-02-01 12:18

    Using Kotlin you can make it by

      (radio_group_id.getChildAt(index) as RadioButton).isChecked = true
    

    or

    radio_group_id.check(R.id.radio_button_id)

    0 讨论(0)
  • 2021-02-01 12:19

    you can do findViewById from the radio group .

    ((RadioButton)my_radio_group.findViewById(R.id.radiobtn_veg)).setChecked(true);`
    
    0 讨论(0)
  • 2021-02-01 12:19

    Inside onBindViewHolder set the tag to Button Group

    @Override
    public void onBindViewHolder(final CustomViewHolder holder, final int position) {
       ...
       holder.ButtonGroup.setTag(position);
    }
    

    and in the 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()
        }
    
    0 讨论(0)
提交回复
热议问题