Pregunta

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

Lo que hace el soporte para COLLATE LOCALIZED ASC?

¿Fue útil?

Solución

Intercalar es sólo hablar de lujo para la clase (clase bien de). Por lo que esta especie está ordenando basa en las preferencias localizadas (alfabeto y convenciones de decir, de idioma actual) en asc para terminar.

Otros consejos

Se instruye a SQLite para ordenar caracteres no ASCII apropiadamente. Caracteres con signos diacríticos (que algunos llaman esos acentos) tienen códigos de bytes más altos que el carácter Z, por lo que un tipo ASCII no encajaría a muchos idiomas.

Por ejemplo, el código de bytes de la capital Un char es 0x41 y la capital Z de char es 0x5A. Luego tenemos el A (A mayúscula Accute) que codifican en Unicode es 0x00C1. Por lo que un código de bytes sin formato tipo daría como resultado el que A sea después de la Z.

Pero en idiomas que tienen este tipo de personajes de la convención es poner aquellos con signos diacríticos, como si ellos no tienen la diacrítica. Por lo que el A debe ser junto con el Una llanura, al menos antes de que B.

Y para ilustrar, a continuación tenemos una lista de nombres clasificar por medio de su código de bytes:

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

Ahora, utilizando el COLLATE LOCALIZED sería ordenar por la "base" del personaje:

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

INTERCALAR es un operador de SQL que permite sustituir el orden de clasificación predeterminado para las cadenas. Por ejemplo, "COLLATE NOCASE" hace comparación entre mayúsculas y minúsculas, y "COLLATE binaria" hace una comparación entre mayúsculas y minúsculas.

La interfaz de SQLite C permite definir las intercalaciones personalizados ( http://www.sqlite.org /c3ref/create_collation.html ).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top