我正在尝试从游标对象中删除一个项目,我不知道该怎么做(或者如果可能的话)。我实际上并不想从数据库中删除该项目,只是“过滤”它而不显示它,具体取决于用户设置。
例如,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());
}
我很确定这是解决此问题的正确方法,但我找不到任何方法从光标中删除项目......
任何帮助都会受到赞赏,干杯!
答案 0 :(得分:0)
我认为您可能希望在它进入Cursor
之前对其进行过滤。尝试更改生成它的查询,以便这些项永远不会进入它。这样,SQLite可以在消耗掉更多资源之前过滤掉那些不需要的东西。
您可以通过将事物发送到'query'的'selection'参数来完成此操作,例如:
KEY_NAME + " LIKE '%" + FILTER_TEXT + "%'"
(这可能需要一些调整,我的SQL生锈了。)
您可能还想查看SQLQueryBuilder
。
至于是否可能,我在documentation中找不到任何你想要的东西。我认为Cursor
是只读的。
答案 1 :(得分:0)