ContentResolver queryパラメータの詳細
3504 ワード
前言
クエリーシステムの連絡先の1つの問題に出会って、query()の方法に対する理解が不十分で、今まとめて整理します!
説明する
ContentResolverはコンテンツ解析器に直訳され、Androidでのプログラム間データの共有はProvider/Resolverによって行われる.データ(コンテンツ)を提供するのはProviderと呼ばれ,Resovler提供インタフェースはこのコンテンツを解読する.
ここで、システムは連絡先のProviderを提供しているので、連絡先の内容を読み取るためにResolverを構築する必要があります.
Android公式ドキュメント:
2番目のパラメータ、projection、なぜこの単語を使うのか分かりません.このパラメータは、Contacts Providerが連絡先のIDや連絡先のNAMEを提供しているなど、Providerが返すコンテンツ(列Column)を教えてくれます.NAMEだけが必要な場合は、次のように使用します.
もちろん、次の印刷のあなたはNAMEを表示するしかありません.あなたが返した結果にはIDが含まれていないからです.Providerを返すすべての内容(列Column)をnullで表します.
3番目のパラメータ、selection、SQL文のwhereに相当する条件を設定します.nullはフィルタを行わないことを示します.張三という名前のデータだけを返す場合は、3番目のパラメータを次のように設定します.
4番目のパラメータ、selectionArgs、このパラメータは3番目のパラメータに合わせて使用されます.3番目のパラメータにあれば?selectionArgsで書いたデータは
効果は上の文の効果と同じです.
5番目のパラメータは、SQL文のOrder byに相当するsortOrderです.IDの降順に結果を並べたい場合は、次のようになります.
参考記事:Android学習ノートContacts(一)ContentResolver queryパラメータ詳細
クエリーシステムの連絡先の1つの問題に出会って、query()の方法に対する理解が不十分で、今まとめて整理します!
説明する
ContentResolver contentResolver = this.getContentResolver();
ContentResolverはコンテンツ解析器に直訳され、Androidでのプログラム間データの共有はProvider/Resolverによって行われる.データ(コンテンツ)を提供するのはProviderと呼ばれ,Resovler提供インタフェースはこのコンテンツを解読する.
ここで、システムは連絡先のProviderを提供しているので、連絡先の内容を読み取るためにResolverを構築する必要があります.
Cursor cursor = contentResolver.query(android.provider.ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
Android公式ドキュメント:
public final Cursor query (Uri uri, String[] projection,String selection,String[] selectionArgs, String sortOrder)
の最初のパラメータ、uri、Androidが提供するコンテンツのProviderと言いますが、Androidではどのように各Providerを区別しますか?連絡先を提供したり、写真を提供したりします.そのため、このProviderを識別する唯一の標識が必要です.Uriはこの標識で、android.provider.ContactsContract.Contacts.CONTENT_URI
は連絡先を提供するコンテンツプロバイダです.残念ながら、このコンテンツプロバイダが提供するデータは少ないです.2番目のパラメータ、projection、なぜこの単語を使うのか分かりません.このパラメータは、Contacts Providerが連絡先のIDや連絡先のNAMEを提供しているなど、Providerが返すコンテンツ(列Column)を教えてくれます.NAMEだけが必要な場合は、次のように使用します.
Cursor cursor = contentResolver.query(android.provider.ContactsContract.Contacts.CONTENT_URI,
new String[]{android.provider.ContactsContract.Contacts.DISPLAY_NAME}, null, null, null);
もちろん、次の印刷のあなたはNAMEを表示するしかありません.あなたが返した結果にはIDが含まれていないからです.Providerを返すすべての内容(列Column)をnullで表します.
3番目のパラメータ、selection、SQL文のwhereに相当する条件を設定します.nullはフィルタを行わないことを示します.張三という名前のデータだけを返す場合は、3番目のパラメータを次のように設定します.
Cursor cursor = contentResolver.query(android.provider.ContactsContract.Contacts.CONTENT_URI,
new String[]{android.provider.ContactsContract.Contacts.DISPLAY_NAME},
android.provider.ContactsContract.Contacts.DISPLAY_NAME + "=' '", null, null);
4番目のパラメータ、selectionArgs、このパラメータは3番目のパラメータに合わせて使用されます.3番目のパラメータにあれば?selectionArgsで書いたデータは
?
に置き換えられます Cursor cursor = contentResolver.query(android.provider.ContactsContract.Contacts.CONTENT_URI,
new String[]{android.provider.ContactsContract.Contacts.DISPLAY_NAME},
android.provider.ContactsContract.Contacts.DISPLAY_NAME + "=?",
new String[]{" "}, null);
効果は上の文の効果と同じです.
5番目のパラメータは、SQL文のOrder byに相当するsortOrderです.IDの降順に結果を並べたい場合は、次のようになります.
Cursor cursor = contentResolver.query(android.provider.ContactsContract.Contacts.CONTENT_URI,
null, null,null, android.provider.ContactsContract.Contacts._ID + " DESC");
+"DESC"
の降順、実はデフォルトの順序は昇順で、+"ASC"
の書くか書かないかの効果はすべて同じです.参考記事:Android学習ノートContacts(一)ContentResolver queryパラメータ詳細