1

私は混乱していて、あなたの助けが必要です。Google IO 2010 で行われた Virgil Dobjanschi の講義「Android REST クライアント アプリケーションの開発」での指示に従おうとしましたが、残念ながら、コンテンツ プロバイダーとカーソル アダプターの間の有効な通信を実装する方法が見つかりません。

私がここで抱えている問題はカーソル アダプターに関連しているため、コンテンツ プロバイダーですべて問題ないと仮定しましょう。たとえば、自分の代わりに Contacts ContentProvider を使用してみましょう。私は最も簡単な解決策を試しました-任意のContentProvider(想定どおり、SDKによって提供される連絡先)とSimpleCursorAdapterです。問題は、連絡先からのカーソルを含む SimpleCursorAdapter のコンストラクターが非推奨であることです。ドキュメンテーションは言う:

このコンストラクターは非推奨です。

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

私の考えは次のとおりです。そこで、LoaderManager のドキュメント サイトにアクセスして、使用例と見つけたものを見つけました。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);

私が見つけることができるすべてのチュートリアルは、この非推奨のコンストラクターを使用しています。これを避けるための適切な方法は何ですか?それとも私が気にしすぎなのかな?私が欲しかったのは、良い習慣を学ぶことだけでした...

4

1 に答える 1

1

Android 2.2 を使用LoaderManagerしている場合は、プロジェクトに Android 互換性ライブラリが既にあると思います。

その場合は使用しないでください

android.widget.SimpleCursorAdapter

そのクラスには、現在非推奨のコンストラクターが 1 つしかないためです。代わりに次を使用します。

android.support.v4.widget.SimpleCursorAdapter

互換ライブラリから。これには 2 つのコンストラクターがあります。

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

質問のコード例では、非推奨ではない 2 番目のコンストラクターを使用しているため、.com の compat lib バージョンを使用する必要がありますSimpleCursorAdapter

于 2011-10-02T14:03:08.497 に答える