我想在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();
但我无法获取活动中的任何数据。它始终显示为null。此外,如果我在单选按钮上单击两次,则取消选择。
请问是否有任何不清楚的地方。任何帮助将不胜感激。
谢谢:)
答案 0 :(得分:3)
将int clickedPos = ((Integer)cb.getTag()).intValue();
替换为int clickedPos =position;