1

私は混乱しており、あなたの助けが必要です。 私は、Google IO 2010で講演した講義「Developing Android REST Client Applications」でVirgil Dobjanschiの指示に従います。残念ながら、Content ProviderとCursor Adapterの間の有効な通信を実装する方法が見つかりません。アンドロイドのカーソルアダプターとコンテンツプロバイダーを使用するにはどのような方法がありますか

私がここで問題になっているのはカーソルアダプタにリンクされています。だから、コンテンツプロバイダには問題ないと思います。たとえば、私自身の代わりにContacts ContentProviderを使ってみましょう。私は最も簡単なソリューション、ContentProvider(想定どおり、連絡先、SDK提供)、SimpleCursorAdapterを試しました。問題は、連絡先からのカーソルを含むSimpleCursorAdapterのコンストラクタが推奨されなくなりました。文書によると:

このコンストラクタは推奨されていません。

このオプションは、カーソルのクエリがアプリケーションのUIスレッドで実行されるため、応答が悪く、アプリケーションが応答しないというエラーが発生する可能性があるため、お勧めしません。代わりに、CursorLoaderでLoaderManagerを使用してください。

「私はそれを使用しません。代わりにCursorLoaderを使ってLoaderManagerを試してみます」と私にアドバイスしています。だから私はLoaderManager documentation siteに行って、使用例と私が見つけたものを見つけましたか? SimpleCursorAdapterコンストラクタを使用する完全な例。はい、私は同じことが推奨されなくなったので避けたかったのです。

// Create an empty adapter we will use to display the loaded data. 
    mAdapter = new SimpleCursorAdapter(getActivity(), 
      android.R.layout.simple_list_item_2, null, 
      new String[] { Contacts.DISPLAY_NAME, Contacts.CONTACT_STATUS }, 
      new int[] { android.R.id.text1, android.R.id.text2 }, 0); 
    setListAdapter(mAdapter); 

この推奨されないコンストラクタを使用しているチュートリアルはすべてあります。誰も私に良い答えを提供することができますこれを使用する避けるためには、プロッパーの方法は何ですか?それとも、私はあまり気にしていますか?私が欲しかったのは、良い習慣を学ぶことでした...

答えて

1

あなたがAndroid 2.2でLoaderManagerを使用している場合は、あなたのプロジェクトにはすでにAndroid互換性ライブラリがあります。そのクラスは一つだけ、現在は非推奨のコンストラクタを持っているので、その場合には

は、

android.widget.SimpleCursorAdapter 

を使用しないでください。代わりに、

android.support.v4.widget.SimpleCursorAdapter 

をcompatライブラリから使用してください。これは、2つのコンストラクタがあります。あなたの質問で

SimpleCursorAdapter(Context, int, Cursor, String[], int[]) // deprecated 
SimpleCursorAdapter(Context, int, Cursor, String[], int[], int) // non-deprecated 

コード例では、第二の、非推奨されないコンストラクタを使用していますし、それによってSimpleCursorAdapterのcompatのlibのバージョンを使用する必要があります。

+0

突然すべての混乱が止まった。あなたの反応は迅速かつ直感的でした。どうもありがとうございました;) – Moyshe

関連する問題