資料作らなきゃ
なので ContentProvider 関連についてちょっと纏めを。
サンプル
NotepadTutorial なソレについて DatabaseHelper を使う形から ContentProvider のサブクラスを作成して、そのメソド経由で CRUD な操作を、という形で修正してみました。
そもそもの作りとして、NotesDBAdapter という DB との i/f なクラスで DatabaseHelper を使っていたのですが、それが ContentProvider の操作を呼び出してるんだけどその中で DatabaseHelper 使って更新、という wrapper が一枚増えたような形になってます。
微妙にムダに見えますが
interface 作って factory method 作ったら model な実装が SQLite だったり GAE だったり、という形で色々なバリエーションが試せるはず。
ContentProvider のサブクラス
以下な実装が必要
- SQLiteOpenHelper のサブクラスな内部クラスを定義
- 作成および再作成 (バージョンアップ時) 向けのメソドを定義しておく
- コンストラクタで UriMatcher な属性の仕込みを行なう
- この属性を使って操作がどのテーブルに対してとか複数行か単一行かという切り分けをする
- onCreate メソドで SQLiteDatabase なオブジェクトを生成
あとは
- insert
- delete
- update
- query
- getType
というメソドを実装すれば良い。あと使う側で Manifest への記述を忘れない事。