一部のメソッドが非推奨になっている古いアプリを更新しようとしています。dbからのデータを表示するListViewを使用する場合は、LoaderManager+CursorLoaderを使用する必要があることがわかりました。CursorLoaderはコンテンツプロバイダーと連携します。それで、私のデータベース内のすべてのテーブルについて、今すぐコンテンツプロバイダーを作成する必要がありますか?どして私がこんな事に ?私の知る限り、コンテンツプロバイダーは他のアプリケーションといくつかのデータベース情報を共有するために使用されていますが、私のアプリは情報を共有していません。だから私はコンテンツプロバイダーなしでCursorLoaderを使用できますか?
2 に答える
私はこのテーマに関するブログ投稿を書きました。詳細については、この回答を確認することもできます。うまくいけば、それはあなたのために物事をクリアするでしょう。
Barakが述べたように、クラスCursorLoader
を拡張することにより、コンテンツプロバイダーなしで実装できます。AsyncTaskLoader<Cursor>
とはいえ、ほとんどのチュートリアルとサンプルコードはContentProvider
sを使用しており、Androidチームもその使用を推奨しているようです。また、独自のクラスを実装するよりもはるかに簡単です。
とはいえ、コンテンツプロバイダーを本当に使用したくない場合は、Dianne Hackborn(Androidフレームワーク開発者の1人であり、SOでは「hackbod」とも呼ばれます)は、コンテンツの代わりにデータベースクラスを使用する独自のローダーを作成することをお勧めします。プロバイダー。最も簡単な方法は、互換性ライブラリからクラスのソースを取得し、CursorLoader
プロバイダークエリを独自のdbヘルパークラスへのクエリに置き換えることです。
はい、できます。定義したオブジェクト、または任意のオブジェクト タイプやリストをロードできるカスタム データ ローダーを使用できます。
互換性ライブラリのサンプルとデモで、Android SDK の LoaderCustomSupport.java のサンプルを調べてください。