Activity/FragmentでCursorLoaderを使う場合の問題点
Androidの公式サンプルでは、CursorLoaderを使う例として、ActivityやFragmentのLoaderManagerと組み合わせる方法しか書かれていない。
確かにLoaderManagerを使うとActivityやFragmentのライフサイクルを考慮してcallbackを呼んでくれるので便利なのだが、以下の問題点がある。
- 様々なViewで違うCursorLoaderを使っている場合、それらのCursorLoaderの処理をすべてActivity/Fragmentに集めて書かなくてはならない。
- そもそもFragmentは使いにくい
カスタムViewとCursorLoaderを直接組み合わせる方法
ViewがCursorLoaderを持っていて、勝手にデータを取ってきて表示してくれれば非常に便利なのだが、公式ドキュメントにはそのサンプルは無い。
ViewにはonWindowVisibilityChanged()というcallbackがあり、これを使えばCursorLoaderとカスタムViewを組み合わせるのは割と簡単にできる。
コードはこちら。
https://gist.github.com/anolivetree/23fdb807246a8269b5af