为什么我无法在Android列表视图中检查单个单选按钮

时间:2016-01-31 14:15:28

标签: java android listview

我的android listview中有2个textviews和4个radiobutton。我可以使用以下代码在listview中添加10个项目。

productsList = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map = new HashMap<String, String>();

map.put("id", id);
map.put("name", name);
map.put("a",ans1);
map.put("b",ans2);
map.put("c",ans3);
map.put("d",ans4);

productsList.add(map);      
ListAdapter adapter = new SimpleAdapter(Test.this, productsList, R.layout.list_item, new String[]{"pid", "name","a","b","c","d"},
                                    new int[]{R.id.pid, R.id.name, R.id.rb1, R.id.rb2, R.id.rb3, R.id.rb4});
setListAdapter(adapter);

当我点击第二个孩子的radiobutton时,它也会选择第7个孩子的单选按钮。当我点击第3个孩子时,它会自动选择第9个孩子。

<TextView
        android:id="@+id/pid"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:visibility="gone" />


    <TextView
        android:id="@+id/name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingTop="6dip"
        android:paddingLeft="6dip"
        android:textSize="17dip"
        android:textStyle="bold" />
    <RadioGroup
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:weightSum="1"
        android:id="@+id/rg"
        android:focusable="false"
        android:focusableInTouchMode="false"

        >
    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/rb1"
        android:checked="false"
        android:focusable="false"
        android:focusableInTouchMode="false"
        />

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/rb2"
        android:checked="false"
        android:focusable="false"
        android:focusableInTouchMode="false"
        />

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/rb3"
        android:checked="false"
        android:focusable="false"
        android:focusableInTouchMode="false"
        />

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/rb4"
        android:checked="false"
        android:focusable="false"
        android:focusableInTouchMode="false"
        />
    </RadioGroup>

</LinearLayout>

我如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

SimpleAdapter的{​​{3}}表示对于实现Checkable的视图,预期的绑定值是布尔值。您的列表项包含RadioButtonsRadioButton扩展CompoundButton,实现Checkable。因此,您需要将布尔值绑定到RadioButton s而不是String值。您可以通过这样定义HashMap来实现此目的:

HashMap<String, Object> map = new HashMap<String, Object>();

然后在地图中为“name”和“pid”的RadioButtonsString值存储布尔值。