techiumスマートフォン用の表示で見るtechiumこのブログは何かに追われないと頑張れない人たちが週一更新をノルマに技術情報を発信するブログです。いただけますと気が向いたら調査するかもしれません。この広告は、90日以上更新していないブログに表示しています。QuantumFluxAndroidのContentProviderを作るときにsqliteを使っているケースがほとんどだと思います。昨今のORMではsqliteを作るのは簡単ですが、ContentProviderでの適応が難しいケースが多々あります。そこでContentProvider用のORMとしてQuantumFluxというのがありましたのでご紹介します。QuantumFluxはsqliteを内部で持っており、AndroidManifestに記載したDB名やパッケージ名から自動的にデータベースを構築し、ContentProviderとして公開することができます。それではやってみましょう。Gradleの設定app/build.gradleのdependenciesに下記を記載します。'info.quantumflux:library:0.9.1'残念ながら公式のREADMEでは取得先が間違っていますので注意が必要です。Applicationクラスの用意まずはアプリケーションクラスを用意します。ここでコンテキストをQuantumFluxに渡し、プロバイダ用のAndroidManifest情報を提供しDBの初期化を行います。}}QuantumFlux.initializeでコンテキストを提供すると初期化ができます。AndroidManifestの用意ContentProviderに関する定義をAndroidManifestに記載していきます。次のように記載していきます。</application>に対して前節で作成したApplicationクラスを指定します。次に内に<meta-data>を下記の内容で記載します。公開するコンテンツプロバイダのAUTHORITYを指定してください。QUERY時のログを出すかどうか(オプション)最後にタグを記載します。authoritiesは必ずmeta-dataのAUTHORITYと同じものを利用しましょう。android:nameはinfo.quantumflux.provider.QuantumFluxContentProviderから変更せずにこのまま利用してください。このContentProviderが要求を受け取りその要求内容に合わせた内容の処理を実行する事になります。定義自体はQuantumFluxのライブラリ内にあるので興味がある人は見てみてください。今回はサンプルとしてTaskクラスを作成しそれを利用します。Taskクラスは次のものを用意しました。detail;}ここでの注意点はQuantumFluxRecordを継承しているクラス名をすべて小文字にしたものがuriの指定の一部となります。QuantumFluxRecordはContentProviderに登録されるデータを操作することができるようにするクラスになります。QuantumFluxRecordを継承しないでTableというアノテーションを利用する方法もありますがそれは検索、追加のみしかできず変更がContentProviderの変更ができないので注意しましょう。モデルではPrimaryKeyやカラム名を指定するColumnというアノテーションがあります。PrimaryKeyはプライマリを指定することができますが、QuantumFluxRecordで_idが定義されているためQuantumFluxRecordを継承したクラスではPrimaryKeyを利用できないことに注意しましょう。Columnはカラム名を指定することなどが可能です。Columnについての指定方法は公式を参考にしてください。下記のようにデータを入れた状態でsaveを実行すると保存されます。下記のようにSelect.fromで指定したクラスに該当するデータを列を取得します。Selectクラスは取得したデータの内の絞り込むwhereやソート機能などのメソッドを持っています。queryAsListやfirstやlastなどのメソッドで該当するクラスを取得することができます。下記のようにselectで取り出したデータに対してupdateを実行すると該当のデータを更新することができます。item.update();QuantumFlux.updateColumnsを使うことで全件の更新が可能と思いますが、残念ながら検索結果に該当するすべてのデータをまとめて更新することができなさそうです。item.delete();コンテンツプロバイダ経由でアクセスしてみる今回作成したものでデータを5つ登録してみました。そのデータをcontentコマンドを使ってアクセスしてみましょう。_id=1IDを指定した取得も問題なくできることが確認できます。感想すごく簡単にContentProviderを作成することができることやモデルに合わせたデータのアクセスができるためCursorの面倒な処理を書く必要がないことが非常にいいと思われます。dexでは動かない報告もありますのでアプリの規模に応じて使うか判断したほうがいいと思われます。Firebase2017-11-23BottomNavigationViewのテストAndroidはてなブログをはじめよう!kobashin__Gさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。