【问题标题】:Display the Contacts in sorting order ContactsContract.Contacts of Content Resolver按排序顺序显示联系人ContactsContract.Contacts of Content Resolver
【发布时间】:2012-12-11 06:24:46
【问题描述】:

我的意图是在android中使用content resolver排序顺序显示联系人。

为此我正在写:

Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                            ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = ?", new String[] { id }, null);

查询方法中的最后一个参数不能为空,以便按Name对元素进行排序。实现按名称排序需要将哪部分代码替换掉null参数?

【问题讨论】:

    标签: android android-contentresolver


    【解决方案1】:

    要根据名称对结果进行排序,请使用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");
    

    【讨论】:

    • 您是否知道在哪里可以找到用于排序的常量的不同值的列表。我认为“DEC”可能是相反的,但其他形式的排序呢?
    • 这里的 {id} 是什么?
    • @NVA 降序是“DESC”
    【解决方案2】:

    您可以使用Upper() 对联系人姓名的大小写进行排序。

    ContentResolver cr = getContentResolver();
    
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
            null, null,  "upper("+ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + ") ASC");
    

    【讨论】:

    • 标准排序方法(不使用大写)是否赋予大写字母权重?就像所有大写的名字都会在小写的名字之前?如果是这样,那是你的“upper(”代码行背后的原因吗?如果不是,这是做什么的?
    【解决方案3】:

    在 API 级别 11 及更高版本上使用 SORT_KEY_PRIMARYSORT_KEY_ALTERNATIVE 会更好。

    Cursor cursor = getContentResolver().query(
        ContactsContract.Contacts.CONTENT_URI,
        null, null, null,
        ContactsContract.Contacts.SORT_KEY_PRIMARY + " ASC");
    

    【讨论】:

    • @Hamidreza 你确定吗? SORT_KEY_PRIMARY 已在 API 11 中引入...
    • 伟大的解决方案哥们
    【解决方案4】:

    ContentResolver.query() 方法接受许多参数,但要对内容提供者记录进行排序,您必须编辑此方法的最后一个参数

    应该是这样的:

    Cursor cursor=getContentProvider().query(.......,"DISPLAY_NAME ASC")

    这将按联系人姓名的升序排列联系人。

    注意:这个参数应该是字符串数据类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      相关资源
      最近更新 更多