Recyclerview получить данные из радиокнопки

Я хочу выбрать только один переключатель в 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();

Но я не могу получить какие-либо данные об активности. Он всегда показывает ноль. Также, если я дважды нажму на переключатель, он отменит выбор.

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

Спасибо :)


person Annie    schedule 15.05.2018    source источник


Ответы (1)


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

person Rajasekaran M    schedule 15.05.2018