2012-12-11 1 views
12

Meine Absicht ist, die Kontakte in Sortierreihenfolge mit content resolver in Android anzuzeigen.Zeigen Sie die Kontakte in der Sortierreihenfolge ContactsContract.Contacts von Content Resolver

Dafür schreibe ich:

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

Es muss, dass der letzte Parameter in Abfragemethode nicht null sein sollte, die Elemente von Name zum Sortieren. Welchen Teil des Codes muss ich ersetzen, um die Sortierung nach Namen zu erreichen? Oder bitte helfen Sie mir in einem solchen Fall die Abfrage ...

Vielen Dank im Voraus

Antwort

30

Ergebnis zu sortieren nach Name Verwendung Phone.DISPLAY_NAME konstant mit ASC als letzten Parameter query Methode. Machen Sie es so:

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

Wissen Sie, wo die Liste der verschiedenen Werte der Konstanten für die Sortierung gefunden werden kann. Ich nehme an, "DEC" mag umgekehrt sein, aber was ist mit anderen Formen der Sortierung? – NVA

+0

Was ist {id} hier? – Gibs

8

können Sie Upper() verwenden sowohl niedriger als auch Großbuchstaben Kontaktnamen zu sortieren.

ContentResolver cr = getContentResolver(); 

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

Gewinnt eine Standardsortiermethode (ohne Obermaterial) Großbuchstaben? Wie werden Namen in Großbuchstaben VOR Namen in Kleinbuchstaben sein? Wenn ja, ist das der Grund hinter Ihrer "oberen (" Codezeile? Wenn nicht, was macht das? – Silmarilos

8

Es wäre besser, SORT_KEY_PRIMARY oder SORT_KEY_ALTERNATIVE auf API-Ebene 11 und später zu verwenden.

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

Arbeit auf API-Ebene 10 zu –

+0

@Hamidreza sind Sie sicher? 'SORT_KEY_PRIMARY' wurde in API 11 eingeführt ... –

+0

Dies sollte die richtige Antwort sein. – Android

Verwandte Themen