Группа переключателей Recyclerview получает проверенное радио - PullRequest
1 голос
/ 27 сентября 2019

У меня есть следующее в моем элементе строки 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>

Так что я хочу, чтобы в моем адаптере повторного просмотра прослушивался, когда элемент радиогруппы проверялся, и получал, был ли проверен его да или нет.мой просмотрщик повторов на держателе bindview у меня есть

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

Но когда я проверяю свой журнал, я вижу значения вроде 2131230980, 2131230979, но не идентификатор переключателя

Я ожидал увидетьидентификатор radio_yes или radio_no в журнале.Что я упускаю в этом.Я все еще хочу использовать радиогруппу вместо независимых радиокнопок.

Ответы [ 2 ]

2 голосов
/ 27 сентября 2019

Вы можете просто использовать регистр переключателя, чтобы найти текущий проверенный идентификатор в setOnCheckedChangeListener

       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 голос
/ 27 сентября 2019

Вы можете увидеть этот ответ https://stackoverflow.com/a/29818783/5523669

getResources().getResourceEntryName(getId())
...