我有一个列表,每一行都有一个单选按钮。我正在使用以下代码在它们之间切换(TEMP 是一个静态变量,用于跟踪已选择的元素,因此当 listview 刷新视图时,我可以再次选择它):
public void onClickRadioButton(View view) {
final int position = listView.getPositionForView(view);
View rowElement = ((View) view.getParent());
// uncheck previous checked button.
if (listRadioButton != null)
listRadioButton.setChecked(false);
// assign to the variable the new one
listRadioButton = (RadioButton) view;
// find if the new one is checked or not, and set "listIndex"
if (listRadioButton.isChecked()) {
listIndex = ((ListView) rowElement.getParent())
.getPositionForView(rowElement);
TEMP = listIndex;
} else {
listRadioButton = null;
listIndex = -1;
TEMP = listIndex;
}
System.out.println("list index : " + listIndex);
}
enter code here
这是适配器类的getView方法:
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.manage_parameter_list_element,
parent, false);
TextView textView = (TextView) rowView
.findViewById(R.id.parameter_textView);
textView.setText("something");
TextView textView2 = (TextView) rowView
.findViewById(R.id.parameter_range_textView);
textView2.setText("something more");
if(position == SelectParameterActivity.TEMP)
// SelectParameterActivity is the class whose code I've written above
{
((RadioButton) rowView.findViewById(R.id.parameter_radioButton))
.performClick();
}
return rowView;
}
在正常情况下,单选按钮之间的切换很好
现在的问题是,考虑这种情况:我选择 option1....下移(这样 option1 不再出现在屏幕上)....上移(option1 再次可见)...选择 option2(或任何其他从第一个)现在第一个选项不会被取消选择..
要取消选择 option1,我必须单击它两次。
仅供参考,我已经尝试了由于 IllegalSateException 而不起作用的 performClick() 方法。