多选的光标适配器

时间:2010-11-11 14:10:55

标签: android

我已经编写了一个APP,其用途有一个小的SQL lite数据库,并且使用游标适配器,我可以检索记录并用它们填充列表视图。从那里我可以获得所选项目的ID并将其从DB中删除,效果很好。我的问题是,随着数据库的增长,一次删除一行会很慢而且令人沮丧所以我想知道是否有任何方法允许多个选择可能带有复选框或甚至更改所选项目的文本颜色这样我就可以收回他们的相对身份证。

我已经阅读了一些关于自定义游标适配器的帖子,但我不确定如何使它们适应我的代码。我在下面发布了我的代码。

private void fillData() {
    Cursor c = mDbHelper.fetchAllNotes();
    startManagingCursor(c);

    String[] from = new String[] {DBHelper.KEY_FIELD0, 
                            DBHelper.KEY_FIELD1,
                            DBHelper.KEY_FIELD2,
                            DBHelper.KEY_FIELD3,
                            DBHelper.KEY_FIELD4};
    int[] to = new int[] {R.id.text,R.id.text2,R.id.text3,R.id.text4,R.id.text5};
    SimpleCursorAdapter dblist = new SimpleCursorAdapter(this, R.layout.row, c, from, to);                                                                                               
    setListAdapter(dblist);   
}

感谢。

1 个答案:

答案 0 :(得分:0)

我自己没有这样做,但我确实找到了解释如何在列表中添加复选框的教程:

http://www.androidpeople.com/android-listview-multiple-choice-example/

您可以使用该示例来允许列表控件中的多项选择项。不使用此示例中的阵列阵列适配器,而是使用SimplecursorAdapter。您必须解决的唯一问题是该示例使用android.R.layout.simple_list_item_multiple_choice作为列表条目,您需要将其替换为您的布局,因为您显然需要多个文本字段。

我不在家,所以我不能尝试,但我确实找到了这个: http://www.mail-archive.com/android-developers@googlegroups.com/msg21920.html

似乎是指为列表项创建自己的multiple_choice布局。

用户做出选择后,您可以通过在数据库适配器中运行SQL一次删除多条记录:

DELETE FROM test WHERE _id IN (1, 3, 6, 7)

其中数字列表是选定的id值。