Pergunta

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

O que COLLATE LOCALIZED ASC apoiar?

Foi útil?

Solução

Alega é apenas uma das pessoas que falam para o tipo (bem o que). Portanto, isso é uma ordem de classificação com base em preferências localizadas (ou seja, alfabeto e convenções do idioma atual) em ASCordem final.

Outras dicas

Ele instrui o SQLite a classificar os personagens não-ASCII adequadamente. Os chars com diacríticos (alguns os chamam de sotaques) têm códigos de bytes mais altos que o caractere Z; portanto, um tipo ASCII simples não se encaixaria em muitas línguas estrangeiras.

Por exemplo, a capital de um byte de char é 0x41 E o Capital Z Char's é 0x5A. Então temos o á (capital um difícil) que o código no unicode é 0x00C1. Portanto, uma classificação de código de bytes simples resultaria que o á foi depois do Z.

Mas em idiomas que têm esse tipo de personagem, a convenção é colocar aqueles com diacríticos como se não tivessem o diacrítico. Portanto, o á deve estar junto com a planície A, pelo menos antes de B.

E para ilustrar, temos abaixo uma lista de nomes classificados usando o bytecode:

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

Agora usando o COLLATE LOCALIZED isso classificaria pela "base" do personagem:

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

A Collate é um operador SQL que permite substituir o pedido de classificação padrão para strings. Por exemplo, "colar nocase" faz comparação insensível ao caso e "colar binário" faz uma comparação sensível ao caso.

A interface sqlite c permite definir colações personalizadas (http://www.sqlite.org/c3ref/create_collation.html).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top