Вопрос

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

Что значит COLLATE LOCALIZED ASC стоять?

Это было полезно?

Решение

Собрать просто нравится говорить за сортировку (хорошо вроде). Так что это сортировка порядка на основе локализованных предпочтений (т.е. алфавит текущего языка и конвенций) в asc.Окончание заказа.

Другие советы

Он поручает SQLite сортировать не-ASCII символы соответствующим образом. Чарс с диакритиками (некоторые вызов им акценты) имеют более высокие байтовые коды, чем персонаж z, поэтому простой сорт ASCII не соответствует многим иностранным языкам.

Например, Capital Char's Byte Code 0x41 и столица z char's 0x5A. Отказ Тогда у нас есть á (Capital a accute), какой код в Unicode является 0x00C1. Отказ Таким образом, простой байтовый код сорт приведет к тому, что á был после Z.

Но на языках, которые имеют такие персонажи, Конвенция состоит в том, чтобы поставить тех диакритиков, как если бы у них не было диакритической. Так что á должно быть вместе с равниной a, по крайней мере, до Б.

И, чтобы проиллюстрировать, у нас ниже списка имен, сортируемых с использованием их Bytecode:

  • Доверие
  • Дебби
  • Джордж
  • Álvaro.
  • Érico.

Теперь используя COLLATE LOCALIZED Это будет сортировать по «базе» персонажа:

  • Álvaro.
  • Доверие
  • Дебби
  • Érico.
  • Джордж

Collate - это оператор SQL, который позволяет переопределить порядок сортировки по умолчанию для строк. Например, «сополучик NOCASE» делает сравнение нечувствительным к регистру, а «сопоставление двоина» делает чувствительное к регистру практики.

Интерфейс SQLite C позволяет определить пользовательские сопоставления (http://www.sqlite.org/c3ref/create_Collation.html.).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top