我的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>
我如何解决这个问题。
答案 0 :(得分:1)
SimpleAdapter
的{{3}}表示对于实现Checkable
的视图,预期的绑定值是布尔值。您的列表项包含RadioButtons
。 RadioButton
扩展CompoundButton
,实现Checkable
。因此,您需要将布尔值绑定到RadioButton
s而不是String
值。您可以通过这样定义HashMap来实现此目的:
HashMap<String, Object> map = new HashMap<String, Object>();
然后在地图中为“name”和“pid”的RadioButtons
和String
值存储布尔值。