如何删除列表视图中重复的联系人?

Posted

技术标签:

【中文标题】如何删除列表视图中重复的联系人?【英文标题】:How do I delete contacts repeated in the listview? 【发布时间】:2014-12-06 03:17:30 【问题描述】:

按照教程 get android contact phone number list

我提取了联系人的电话号码和姓名,如何让列表视图干净、没有重复的联系人并且可能按姓名排序?

【问题讨论】:

也许循环遍历列表并将联系人添加到不允许重复的数据结构中? 【参考方案1】:

试试这个:

Cursor phones = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
List<String> phoneNumbers = new ArrayList<String>();
while (phones.moveToNext()) 
    String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
    phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
    System.out.println(".................."+phoneNumber); 

    if(!phoneNumbers.contains(phoneNumber)) 
        phoneNumbers.add(phoneNumber);
    

Collections.sort(phoneNumbers);

简而言之:在添加之前检查电话号码是否不在列表中。在进行检查之前删除每个电话号码中的所有空格可能会很方便,这样您就可以确保没有重复通过。

更多关于排序的信息:http://developer.android.com/reference/java/util/Collections.html#sort%28java.util.List%3CT%3E%29

【讨论】:

【参考方案2】:

试试这个;

使用不允许重复的数据结构,例如哈希映射 使用电话号码作为 Key 例如键 = 电话号码,值 = 姓名或 Key = phoneNumber,Value = OtherContactDetails 列表 使用集合进行排序 将排序后的集合传递给您的适配器

【讨论】:

以上是关于如何删除列表视图中重复的联系人?的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的列表中删除重复项? [复制]

如何使用复选框将Android联系人添加到列表视图中[重复]

如何删除vcf文件中的重复联系人

从列表中删除重复项?

如何以某种通用方式删除有序对多 CoreData 关系中的对象?

如何删除以编程方式添加新联系人时添加的 Android 联系人应用程序中的重复条目?