閉じる

カスタムListViewとフィルタ

ネットで調べると「Adapterクラスの getFilterをオーバーライドしてカスタムフィルタを返すようにしろ」「FilterQueryProviderを設定するんだ」等々あるのだけど、CursorAdapterと CursorLoaderを使っているような状況だとどれにも当てはまらず、「restartLoaderを使って SQLiteに丸投げするんだよ」的な答えに行き着く。
ソレはソレでいいのだけど、自分は「ContentProviderに渡す URIにキーワード類を含めるのか?」「その時は良いだろうけど、通知周りがぼろぼろにならんか?」等々悩んだわけだ。
その結果、ContentProvider#queryメソッドに URIと共に SQLの断片が渡される意味がわかった。
URIは何のリストかを表すだけで、SQLの断片でフィルタリング等々を実装するわけだ。
というわけで、フィルタの条件が変わったら URIそのままで restartLoaderを呼び出し、ソレによって構築される SQLが新しいフィルタを反映するように組み直すと。

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)