Call requery()
on the Cursor
when you change data in the database that you want reflected in that Cursor
(or things the Cursor
populates, like a ListView
via a CursorAdapter
).
A Cursor
is akin to an ODBC client-side cursor — it holds all of the data represented by the query result. Hence, just because you change the data in the database, the Cursor
will not know about those changes unless you refresh it via requery()
.
UPDATE: This whole question and set of answers should be deleted due to old age, but that’s apparently impossible. Anyone seeking Android answers should bear in mind that the Android is a swiftly-moving target, and answers from 2009 are typically worse than are newer answers.
The current solution is to obtain a fresh Cursor
and use either changeCursor()
or swapCursor()
on the CursorAdapter
to affect a data change.