记住列表中选定的RadioButton状态

时间:2016-10-31 00:14:08

标签: android radio-button listitem radio-group

我有一个ListView包含多个项目,以便在滚动期间重复使用这些项目。 一个项目由几个TextViews和一个RadioGroup组成,包含3 RadioButtons

我遇到的问题是,当我为5个项目中的每个项目选择RadioButton时,当我向下滚动列表并再次向上滚动时,我在开头做的选择是没有被保存(这意味着没有RadioButton或错误的将被显示为已选中),而某些RadioButtons也会出现选择,即使我从未点过它们。

我试图将所选内容的checkedId保存在列表中,但没有运气。

关注我的代码:

public View getView(int position, View convertView, ViewGroup parent) {
    ...
    int questionID = question.getQuestionID();
    if (mappedSelectedAnswer.containsKey(questionID)) {
        radioGroup.check(mappedSelectedAnswer.get(questionID));
    } else {
        radioGroup.check(-1);
    }
    ...
}

和RadioGroupListener

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        if (checkedId != -1) {
            mappedSelectedAnswer.put(questionID, checkedId);
        }
    ...
    });

mappedSelectedAnswer是一个包含密钥questionID的列表,其值为checkedId

有人对这个问题有任何建议吗?

谢谢

3 个答案:

答案 0 :(得分:0)

您可能需要将它们全部声明为单独的RadioGroup,以便为每个Item选择它们。我希望它会对你有所帮助。

由于

答案 1 :(得分:0)

你需要三件事

1- A存储每个RadioGroup的选定ID的列表

2- RadioGroup中的一个侦听器,用于在选项卡上设置/重置所选的id

3-创建视图时,适配器将检查此列表,并选择您在监听器中保存的项目

答案 2 :(得分:0)

例如:

<RadioGroup
    android:id="@+id/group"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content">
    <RadioButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Standard Taxi (upto 4 passengers)"
        android:id="@+id/standardTaxi"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:onClick="radio"
        android:checked="true" />

    <RadioButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Wagon(upto 4 passengers)"
        android:id="@+id/wagon"
        android:layout_below="@+id/standardTaxi"
        android:layout_alignParentStart="true"

        android:onClick="radio"
        android:checked="false" />

    <RadioButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Wheelchair Accessible Taxi"
        android:id="@+id/wheelchair"
        android:layout_below="@+id/wagon"
        android:layout_alignParentStart="true"
        android:onClick="radio"

        android:checked="false" />

    <RadioButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Van/Maxi(5-11 passengers)"
        android:id="@+id/van"
        android:layout_centerVertical="true"
        android:onClick="radio"
        android:layout_alignParentStart="true"
        android:checked="false" />
</RadioGroup>