Android列表和复选框

时间:2010-06-24 17:19:51

标签: android

我有一个简单的列表,可以从数据库中填入一个复选框。我需要一个处理所选的所有复选框。当那时按下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异常。另外我需要一个监听器来处理复选框状态?我只是陷入了这一点,毫无头绪......

1 个答案:

答案 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();