如何在列表视图中查找重复的联系人

时间:2016-10-14 06:38:56

标签: java android

我开发了通过内容解析器访问联系人的应用程序。它在一个列表视图中显示所有联系人,即使重复的联系人也显示在同一列表视图中但我想在其他列表视图中显示重复的联系人,以便我可以根据我的愿望很容易。请帮助我。我要诚挚地感谢你。示例代码。

ImageReader

2 个答案:

答案 0 :(得分:1)

我建议您将所有联系人添加到列表中,并通过hashset删除重复项。因为hashset不允许重复元素。

psedo code:---
1. Once get all object like name,phone number from contentResolver then add those string objet into arraylist 
2. After that pass taht list to hashset so duplicate will be removed.

ArrayList<String> values=new ArrayList<String>();
HashSet<String> hashSet = new HashSet<String>();
hashSet.addAll(values);
values.clear();
values.addAll(hashSet);
it might be helpful for you .

答案 1 :(得分:0)

从Contact ArrayList中找到重复的联系人

private ArrayList<PhoneContact> findDuplicates1(ArrayList<PhoneContact> phoneContacts) {

    int i;
    ArrayList<PhoneContact> list2 = new ArrayList<>();
    PhoneContact contact;
    int count ;
    for (i = 0; i < phoneContacts.size() ; i++){
        String contact1 = phoneContacts.get(i).getContactNumber();
        contact = phoneContacts.get(i);

        count = 0;
        list2.add(contact);

        for (int j = i+1 ;j < phoneContacts.size() ; j++ )
        {
            String contact2 = phoneContacts.get(j).getContactNumber();
            if (contact1.equals(contact2) || contact1.equals("+91"+contact2) || contact2.equals("+91"+contact1)){
                phoneContacts.get(j).setCheck(true);
                PhoneContact contact11 = phoneContacts.get(j);
                count = 1;
                list2.add(contact11);
                phoneContacts.remove(j);
            }
        }
        if (count == 0)
        {
            list2.remove(contact);
            count=0;
        }
    }
    return list2;
}

此处只需传递您的Contact ArrayList并返回重复联系人列表