我的目的是在android中使用content resolver
以排序顺序显示联系人。
为此我写信:
Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = ?", new String[] { id }, null);
它需要查询方法中的最后一个参数不应为null,以便按Name
对元素进行排序。代码的哪一部分我要替换null参数来实现按名称排序?或者请在这种情况下帮我查询......
提前致谢
答案 0 :(得分:36)
要根据名称使用Phone.DISPLAY_NAME
常量对结果进行排序,并将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");
答案 1 :(得分:11)
您可以使用Upper()
对小写和大写联系人姓名进行排序。
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
null, null, "upper("+ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + ") ASC");
答案 2 :(得分:11)
最好在API级别11及更高版本上使用SORT_KEY_PRIMARY或SORT_KEY_ALTERNATIVE。
Cursor cursor = getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI,
null, null, null,
ContactsContract.Contacts.SORT_KEY_PRIMARY + " ASC");
答案 3 :(得分:0)