Отображение контактов в порядке сортировки ContactsContract.Contact of Content Resolver
Я намерен отображать контакты в порядке сортировки с помощью content resolver
в android.
Для этого я пишу:
Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = ?", new String[] { id }, null);
Необходимо, чтобы последний параметр в методе запроса не был пустым для сортировки элементов Name
. Какую часть кода мне нужно заменить нулевым параметром, чтобы добиться сортировки по имени? Или, пожалуйста, помогите мне в таком случае...
Заранее спасибо
Ответы
Ответ 1
Чтобы отсортировать результат в соответствии с именем, используйте Phone.DISPLAY_NAME
constant с ASC
как последний параметр для метода query
. сделайте это как:
Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = ?",
new String[] { id },
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+" ASC");
Ответ 2
Вы можете использовать Upper()
для сортировки как для нижнего, так и для имени контакта в верхнем регистре.
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
null, null, "upper("+ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + ") ASC");
Ответ 3
Лучше использовать SORT_KEY_PRIMARY или SORT_KEY_ALTERNATIVE на уровне API 11 и более поздних версий.
Cursor cursor = getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI,
null, null, null,
ContactsContract.Contacts.SORT_KEY_PRIMARY + " ASC");
Ответ 4
Метод ContentResolver.query() принимает много аргументов, но для сортировки записей поставщика контента необходимо отредактировать последний аргумент этого метода.
![enter image description here]()
Это должно быть так:
Cursor cursor=getContentProvider().query(.......,"DISPLAY_NAME ASC")
Это упорядочит контакты в порядке возрастания их имени.
Примечание. Этот аргумент должен иметь тип данных String.