I have a ListView populated via a CursorAdapter. I give my user the ability to alter the data in the list. For example, the user can mark a row as being unread (the data are messages).
Suppose my user marked a row unread. Would a proper implementation mark the row in the database as read and then requery the Cursor?
Would a proper implementation mark the row in the database as read and then requery the Cursor?
Yes, that's the right answer. The requery()
will trigger an automatic update of your CursorAdapter
, which will trigger an automatic update of the ListView
, which will trigger an automatic smile from the user. :-)
UPDATE
The requery()
method is deprecated. A better approach nowadays is to run a query to get a fresh Cursor
, then use changeCursor()
or swapCursor()
on your CursorAdapter
.
If the cursor is back by a ContentProvider and the ContentProvider issues correct notifications, the CursorAdapter will automatically refresh itself i.e. without the need to issue an explicit requery().