Я хочу выбрать только один переключатель в recyclerView
и получить его данные в Activity
.
Я прошел через следующие решения:
- Одиночный выбор в RecyclerView
- Выберите только один переключатель в представлении повторного использования
И я сделал одно решение:
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();
Но я не могу получить какие-либо данные об активности. Он всегда показывает ноль. Также, если я дважды нажму на переключатель, он отменит выбор.
Пожалуйста, спрашивайте, если что-то непонятно. Любая помощь будет оценена по достоинству.
Спасибо :)