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();
Но я не могу получить какие-либо данные в деятельности. Это всегда показывает ноль. Также, если я дважды нажму на кнопку с зависимой фиксацией, то она отменяется.
Пожалуйста, спросите, если что-то неясно. Любая помощь будет оценена.
Спасибо:)
1 ответ
Замещать int clickedPos = ((Integer)cb.getTag()).intValue();
от int clickedPos =position;