I'm trying to remove an item from a cursor object, and I'm not sure how to do it (or if it's possible). I don't actually want to remove the item from the database, just 'filter' it and not display it, depending on user settings.
For example here, FILTER_TEXT
is from the application preferences and it contains text that the cursor must contain or else it is removed.
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());
}
I was fairly sure this was the right way to tackle this, but I can't find any way to remove an item from a cursor...
Any help would be appreciated, cheers!
I think you might want to filter it before it even gets in to the Cursor
. Try altering the query that generates it so that those items never even get in to it. This way, SQLite can filter out those unneeded things before they use up any more resources.
You can do this by sending things to the `selection' parameter of 'query', something like:
KEY_NAME + " LIKE '%" + FILTER_TEXT + "%'"
(That may need some tweaking, my SQL is rusty.)
You may also want to look in to SQLQueryBuilder
.
As to if it's possible, I couldn't find anything in the documentation that would do what you wanted. I think Cursor
is read-only.