Recyclerview получить данные из радиопереключателя - PullRequest
0 голосов
/ 15 мая 2018

Я хочу выбрать только одну радиокнопку в recyclerView и получить ее данные в Activity.

Я прошел через следующие решения:

И я принял одно решение:

private static int lastCheckedPos = -1;

    binding.radioButton.setChecked(mImagesList.get(position).isSelected());
    binding.radioButton.setTag(new Integer(position));

                //for default check in first item
                if(position == 0 && mImagesList.get(0).isSelected() && binding.radioButton.isChecked())
                {
                    radioButton = binding.radioButton;
                    lastCheckedPos = 0;
                }

                binding.radioButton.setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View v)
                    {
                        RadioButton cb = (RadioButton)v;
                        int clickedPos = ((Integer)cb.getTag()).intValue();

                        if(cb.isChecked())
                        {
                            if(radioButton != null)
                            {
                                radioButton.setChecked(false);
                                mImagesList.get(lastCheckedPos).setSelected(false);
                            }

                            radioButton = cb;
                            lastCheckedPos = clickedPos;
                        }
                        else
                            radioButton = null;

                        mImagesList.get(clickedPos).setSelected(cb.isChecked());
                    }
                });

Я написал это в методе onBindViewHolder.

Теперь, чтобы получить данные, я написал это в adapter:

public String getUserId() {

        if(lastCheckedPos == -1)
        {
            return null;
        } else {
            return mImagesList.get(lastCheckedPos).getUser_code();
        }
    }

И заполучил это в действии:

 userId = adapter.getUserId();

Но я нев состоянии получить любые данные в деятельности.Это всегда показывает ноль.Также, если я дважды нажму на кнопку с зависимой фиксацией, она будет отменена.

Пожалуйста, спросите, если что-то неясно.Любая помощь будет оценена.

Спасибо:)

1 Ответ

0 голосов
/ 15 мая 2018

Заменить int clickedPos = ((Integer)cb.getTag()).intValue(); на int clickedPos =position;

...