Question

private Cursor getContacts()
    {
        // Run query
        Uri uri = ContactsContract.Contacts.CONTENT_URI;
        String[] projection = new String[] {
                ContactsContract.Contacts._ID,
                ContactsContract.Contacts.DISPLAY_NAME
        };
        String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '" +
                (mShowInvisible ? "0" : "1") + "'";
        String[] selectionArgs = null;
        String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";

        return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
    }

Qu'est-ce que COLLATE LOCALIZED ASC représente?

Était-ce utile?

La solution

est Collate figurez-vous parler pour le tri (bien en quelque sorte). Donc, ce genre est la commande en fonction des préférences localisées (à savoir l'alphabet de la langue actuelle et conventions) asc pour la fin.

Autres conseils

Il indique SQLite pour trier les caractères non-ASCII appropriée. Chars avec diacritiques (accents certains les appellent) ont des codes d'octets plus élevé que le caractère Z, donc une sorte ASCII ne serait pas s'adapter à de nombreuses langues étrangères.

Par exemple, la capitale du code d'octets char est 0x41 et 0x5A de la capitale Z omble chevalier. Ensuite, nous avons le A (majuscule accute) qui code Unicode est 0x00C1. Donc, une sorte de code d'octet clair entraînerait la Á être après la Z.

Mais dans les langues qui ont ce genre de personnages de la convention est de mettre ceux qui diacritiques comme s'ils ne pas le diacritique. Ainsi, le A doit être en même temps que la plaine A, au moins avant B.

Et pour illustrer, nous avons ci-dessous une liste de noms en utilisant leur bytecode triée:

  • Brenda
  • Debby
  • George
  • Álvaro
  • Érico

Maintenant, en utilisant l'COLLATE LOCALIZED il trierait par la « base » du caractère:

  • Álvaro
  • Brenda
  • Debby
  • Érico
  • George

COLLATE est un opérateur SQL qui vous permet de modifier l'ordre de tri par défaut pour les chaînes. Par exemple, « COLLATE NOCASE » fait la comparaison insensible à la casse, et « COLLATE BINARY » fait une comparaison sensible à la casse.

L'interface SQLite C vous permet de définir un classement personnalisé ( http://www.sqlite.org /c3ref/create_collation.html ).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top