Domanda

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);
    }

Che cosa fa il basamento COLLATE LOCALIZED ASC per?

È stato utile?

Soluzione

Fascicola è solo parlare di fantasia per sort (ben sorta di). Quindi questa è una sorta di ordini basato sulle preferenze localizzate (alfabeto e le convenzioni di vale a dire la lingua corrente) in asc ordine finale.

Altri suggerimenti

Si istruisce SQLite per ordinare i caratteri non ASCII in modo appropriato. Caratteri con segni diacritici (alcuni chiamano loro accenti) hanno codici di byte più elevati rispetto al carattere Z, quindi una sorta ASCII non sarebbe adatta a molte lingue straniere.

Per esempio, il codice di byte la A maiuscola del char è 0x41 e del salmerino Z capitale è 0x5A. Poi abbiamo la A (maiuscola accute), che il codice in Unicode è 0x00C1. Quindi un bytecode pianura specie comporterebbe l'A da dopo la Z.

Ma in lingue che hanno questo tipo di personaggi della Convenzione è quello di mettere le persone con segni diacritici, come se non avessero il diacritico. Così la A dovrebbe essere insieme con la pianura A, almeno prima B.

E per illustrare, abbiamo seguito un elenco di nomi ordinati utilizzando la loro bytecode:

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

Ora con il COLLATE LOCALIZED sarebbe ordinare dalla "base" del personaggio:

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

COLLATE è un operatore SQL che consente di sostituire l'ordinamento predefinito per le stringhe. Ad esempio, "COLLATE NOCASE" fa il confronto maiuscole e minuscole, e "COLLATE binario" fa un confronto tra maiuscole e minuscole.

L'interfaccia SQLite C consente di definire regole di confronto di personalizzati ( http://www.sqlite.org /c3ref/create_collation.html ).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top