我想有RadioButton
inside ListView
,问题是每个RadioButton
填充在ListView
, 都有不同的,RadioGroup
因为它们都可以选择。我只想选择一个项目并将其位置的 checkFlag 设置为 true,将其他位置设置为 false。我添加了每个RadioButton
使用addView
但触发java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
这是我的getView
:
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
View row = convertView;
holder = null;
final Option optionItem = data[position];
protected int selectedPosition = -1;
protected boolean selectedCheckFlag = false;
if (row == null) {
LayoutInflater inflater = ((Activity) context)
.getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new OptionHolder();
holder.radioGroup = (RadioGroup) row
.findViewById(R.id.radiogroup_survey);
holder.radioButton = (RadioButton) row
.findViewById(R.id.radiobutton_survey);
row.setTag(holder);
} else {
holder = (OptionHolder) row.getTag();
}
holder.radioGroup.setOrientation(RadioGroup.VERTICAL);
holder.radioButton.setText(optionItem.option);
holder.radioGroup.addView(holder.radioButton); // Triggered IllegalStateException
holder.radioGroup
.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group,
int checkedId) {
// TODO Auto-generated method stub
RadioButton selectedRadio = (RadioButton) findViewById(checkedId);
Toast.makeText(getApplicationContext(), selectedRadio.getText().toString(), Toast.LENGTH_SHORT).show();
optionItem.
selectedCheckFlag = true;
selectedPosition = position;
if (selectedPosition > -1
&& selectedCheckFlag)
optionItem.checkFlag = true;
else
optionItem.checkFlag = false;
}
});
return row;
}
这是项目布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/parent_radio"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RadioGroup
android:id="@+id/radiogroup_survey"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/radiobutton_survey"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:button="@drawable/selector_checkbox_red"
android:textColor="@color/brown" />
</RadioGroup>