To: mako様
松村です。
> UI更新を走らせるとしても、やはりSQliteのクエリを再度実行して
> UIの更新をしなくてはならないのでしょうか。
Cursorはクエリの結果セットへの参照です。
DB内容が更新されても、DB更新前に取得したCursorからDB変更後の値は取得できません。
mako様ご推察のとおり、再度クエリを発行して新しいCursorオブジェクトを取得する必要があります。
Cursorには、再度クエリ発行するrequery()というメソッドが存在しますが非推奨APIです。
http://developer.android.com/reference/android/database/Cursor.html#requery()
# Don't use this. Just request a new cursor, so you can do this
asynchronously and update your list view once the new cursor comes
back.
Cursorを使い回すよりは新しいCursorを取得しなおした方が良いでしょう。
常に(バックグラウンドでのDB更新も含め)最新のDB内容を表示する方法としては、
DBを更新→ContentObserver.onChange→クエリ再発行でCursor取得→UI更新
といったところでしょうか?
DB監視するまでもない場合はAsyncTaskやCursorLoaderを使用して、
DBを更新→クエリ再発行でCursor取得→UI更新
でもいけそうですね。
以上です。