Recyclerview单选按钮组获取选中的单选

时间:2019-09-27 16:34:58

标签: java android android-recyclerview android-radiogroup

我的recylerview行项目中包含以下内容

<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:id="@+id/radioItems"
            android:layout_height="wrap_content"
            android:weightSum="2"
            android:orientation="horizontal">
            <RadioButton android:id="@+id/radio_yes"
                android:layout_width="wrap_content"
                android:layout_weight="0.8"
                android:layout_height="wrap_content"
                android:textSize="12sp"
                android:text="Yes"/>
            <RadioButton android:id="@+id/radio_no"
                android:layout_width="wrap_content"
                android:layout_weight="1"
                android:textSize="12sp"
                android:layout_height="wrap_content"
                android:text="No"/>
        </RadioGroup>

所以我想在我的recyclerview适配器中侦听是否选中了无线电组项,并获取是否已检查其是或否。因此我在bindviewholder上的recyclerview中有

      holder.radioItems.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            Log.i("test",""+group.getCheckedRadioButtonId());
        }
    });

但是当我查看日志时,可以看到类似2131230980, 2131230979的值,但看不到单选按钮的ID

我希望在日志中看到radio_yesradio_no的ID。 我在这方面错过了什么。 我仍然想使用单选按钮,而不是独立的单选按钮。

2 个答案:

答案 0 :(得分:3)

您只需使用开关盒即可在 setOnCheckedChangeListener

中查找当前选中的ID
       switch (checkedId) {
            case R.id.radio_yes :
              Log.i("test","radio_no");
             break;
             case R.id.radio_no:
              Log.i("test","radio_yes");
             break;

        }

比切换用例更简单,您可以使用以下代码

String currentCheckedId=getResources().getResourceEntryName(checkedId);
Log.d("test",currentCheckedId);

答案 1 :(得分:2)

您可以看到此答案 https://stackoverflow.com/a/29818783/5523669

getResources().getResourceEntryName(getId())