我有一个简单的列表,从数据库中填入一个复选框.我需要一个处理所选的所有复选框.当那时按下CLEAR按钮时,我需要所有选中复选框的行ID来删除它们.去做这个 :
我的list.xml文件如下所示:
我的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导致其他任何地方的句柄,它会给我一个null异常,因为data_entry包含复选框.另外我需要一个监听器来处理复选框状态?我只是坚持这一点,毫无头绪..
解决方法
为什么不使用标准的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();