2

我正在尝试从光标对象中删除一个项目,但我不知道该怎么做(或者如果可能的话)。我实际上并不想从数据库中删除该项目,只是“过滤”它而不显示它,具体取决于用户设置。

例如这里,FILTER_TEXT来自应用程序首选项,它包含光标必须包含的文本,否则将被删除。

Cursor mCursor = mDB.query(dbTable, new String[] {KEY_ROWID, KEY_NAME,
            KEY_URL}, null, null, null, null, null);

    if (mCursor.moveToFirst()) {
        do {
            if (!mCursor.getString(1).contains(FILTER_TEXT)) {
                // Remove cursor item here
            }
        } while (mCursor.moveToNext());
    }

我相当确定这是解决这个问题的正确方法,但我找不到任何方法从光标中删除项目......

任何帮助将不胜感激,干杯!

4

2 回答 2

0

我想你可能想在它进入Cursor. 尝试更改生成它的查询,以便这些项目甚至永远不会进入它。通过这种方式,SQLite 可以在它们耗尽更多资源之前过滤掉那些不需要的东西。

您可以通过将内容发送到“查询”的“选择”参数来做到这一点,例如:

KEY_NAME + " LIKE '%" + FILTER_TEXT + "%'"

(这可能需要一些调整,我的 SQL 已经生锈了。)

您可能还想查看SQLQueryBuilder.

至于是否有可能,我在文档中找不到任何可以满足您需求的内容。我认为Cursor是只读的。

于 2011-06-29T23:35:07.440 回答
0
  • 如果您想实现一个可由用户过滤的列表,您可以使用 CursorAdapter 并将 ListViews setTextFilterEnabled设置为 true
  • 您可以使用CursorLoader在后台加载新光标并在加载时将其换入。
于 2011-06-29T23:49:05.257 回答