我有一个简单的列表,可以从数据库中填入一个复选框。我需要一个处理所选的所有复选框。当那时按下CLEAR按钮时,我需要所有选中复选框的行ID来删除它们。去做这个 : 我的list.xml文件如下所示:
< LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ListView
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/clearselected"
android:text="CLEAR"
android:clickable ="false"/>
</LinearLayout>
我的data_entry.xml如下所示:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/CheckBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="50px"
android:layout_y="22px"></CheckBox>
<TextView android:text="@+id/EntryText"
android:id="@+id/EntryText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/blue"/>
</LinearLayout>
现在:我有list.java文件,我填写列表如下:
private void populateList() {
Cursor c = db1.getAllList();
String[] fields = new String[]{db1.get_data()};
SimpleCursorAdapter cursorAdapter = new
ListAdapter adapter = new SimpleCursorAdapter(this, R.layout.data_entry, c,
fields, new int[] {R.id.EntryText});
setListAdapter(adapter);
}
现在我把heckbox的句柄放在其他任何地方,因为data_entry包含复选框,它会给我一个null异常。另外我需要一个监听器来处理复选框状态?我只是陷入了这一点,毫无头绪......
答案 0 :(得分:20)
为什么不使用标准的ListView并启用CHOICE_MODE_MULTIPLE,而不是自己滚动?
listView.setChoiceMode(CHOICE_MODE_MULTIPLE);
listView.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice, fields));
然后,您可以向listView询问已检查的项目。
listView.getCheckedItemPositions();