Android - 选择组中的单选按钮会导致选择另一个组中的另一个单选按钮

时间:2017-02-28 19:34:32

标签: java android android-layout listview android-studio

我正在使用片段布局在ListView中显示一行,并且我使用ListAdapter来填充ListView。每行包含一个TextView和一个RadioGroup,每个无线电组包含2个RadioButtons,表示是和否。

问题在于,当我运行应用程序时,当我在第一个组上选择一个RadioButton(如是)时,它会导致另一个RadioButton(也是)在ListView的另一行中的另一个组中被选中。

以下是行片段的布局代码:

ctr += 1

我的ListAdapter类:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/questionTextView">

<TextView
    android:text="Dis one na question wey go need yes or no answer?"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/questionView"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginTop="19dp"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:textSize="20sp" />

<RadioGroup
    android:layout_width="120dp"
    android:layout_height="wrap_content"
    android:id="@+id/customRadioGroup"
    android:layout_marginTop="16dp"
    android:layout_below="@+id/questionView"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true">

    <RadioButton
        android:text="Yes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/yesRadioBtn"
        android:layout_alignBaseline="@+id/noRadioBtn"
        android:layout_alignBottom="@+id/noRadioBtn"
        android:layout_toLeftOf="@+id/noRadioBtn"
        android:layout_toStartOf="@+id/noRadioBtn"
        android:layout_marginRight="15dp"
        android:layout_marginEnd="15dp" />

    <RadioButton
        android:text="No"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/noRadioBtn"
        android:layout_below="@+id/questionsTitle"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_marginRight="16dp"
        android:layout_marginEnd="16dp" />

</RadioGroup>

1 个答案:

答案 0 :(得分:0)

如果您重复使用RadioGroupView),则需要重置convertView != null。以下更改会将RadioGroup重置为“无选择”,但您需要将其设置为内部数据结构answers中反映的值。

RadioGroup radioGroup = (RadioGroup)view.findViewById(R.id.customRadioGroup);
if (convertView != null) {
    radioGroup.clearCheck();
}