web-dev-qa-db-ja.com

連絡先を並べ替え順に表示するContactsContract.Contactsof Content Resolver

私の意図は、Androidでcontent resolverを使用して並べ替え順序で連絡先を表示することです。

そのために私は書いています:

Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                            ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = ?", new String[] { id }, null);

要素をNameでソートするには、クエリメソッドの最後のパラメータがnullにならないようにする必要があります。名前による並べ替えを実現するには、コードのどの部分をnullパラメーターに置き換える必要がありますか?または、そのような場合にクエリを実行するのを手伝ってください...

前もって感謝します

15
user1862773

名前に従って結果を並べ替えるには、ASCメソッドの最後のパラメーターとしてqueryを指定してPhone.DISPLAY_NAME定数を使用します。次のようにします。

  Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                   null, 
                   ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = ?",
                   new String[] { id },
                   ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+" ASC");
36

Upper()を使用して、小文字と大文字の両方の連絡先名を並べ替えることができます。

ContentResolver cr = getContentResolver();

Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
        null, null,  "upper("+ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + ") ASC");
12

APIレベル11以降では SORT_KEY_PRIMARY または SORT_KEY_ALTERNATIVE を使用することをお勧めします。

Cursor cursor = getContentResolver().query(
    ContactsContract.Contacts.CONTENT_URI,
    null, null, null,
    ContactsContract.Contacts.SORT_KEY_PRIMARY + " ASC");
11
Nick Dowell

ContentResolver.query()メソッドは多くの引数を取りますが、コンテンツプロバイダーのレコードを並べ替えるには、を編集する必要があります。このメソッドの最後の引数

enter image description here

次のようになります。

Cursor cursor=getContentProvider().query(.......,"DISPLAY_NAME ASC")

これにより、連絡先が名前の昇順で並べられます。

注:この引数はStringデータ型である必要があります。

0
Prateek Sharma