我有一个按排序顺序的联系人列表。但是在我的联系人列表中,姓名重复了相同的号码。我认为问题是由于联系人列表与其他帐户同步所致。

我检查了哈希图。但是,当我使用哈希映射时,结果未按name排序。

private static final String[] PROJECTION = new String[] {
    ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
    ContactsContract.Contacts.DISPLAY_NAME,
    ContactsContract.CommonDataKinds.Phone.NUMBER
};

ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, PROJECTION,
  null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " COLLATE NOCASE ASC");

if (cursor != null) {
    try {
        int nameIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
        String nameContact = cursor.getString(nameIndex);
    finally {
        cursor.close();
    }
}

适配器
holder.name.setText(itemListPogo.get(position).getItemName());

任何人都可以帮助避免名称重复。

最佳答案

我建议您使用搜索结束的地方,它将为您带来最快的结果。

public static List<ContactDTO> getPhone(Context context) {
    List<ContactDTO> contactList = new ArrayList<ContactDTO>();
    ContentResolver cr = context.getContentResolver();
    String[] PROJECTION = new String[] {
        ContactsContract.RawContacts._ID,
        ContactsContract.Contacts.DISPLAY_NAME,
        ContactsContract.CommonDataKinds.Phone.PHOTO_URI,
        ContactsContract.CommonDataKinds.Phone.NUMBER,
        ContactsContract.CommonDataKinds.Photo.CONTACT_ID };

    Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
    String filter = ""+ ContactsContract.Contacts.HAS_PHONE_NUMBER + " > 0 and " + Phone.TYPE +"=" + Phone.TYPE_MOBILE;
    String order = ContactsContract.Contacts.DISPLAY_NAME + " ASC";// LIMIT " + limit + " offset " + lastId + "";

    Cursor phoneCur = cr.query(uri, PROJECTION, filter, null, order);
    while(phoneCur.moveToNext()) {
        ContactDTO dto = new ContactDTO();
        dto.setName("" + phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
        dto.setMobileNo("" + phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
        dto.setPhotoUrl("" + phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_URI)));
        dto.setContactId("" + phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Photo.CONTACT_ID)));
        contactList.add(dto);
    }
    phoneCur.close();

    return contactList;
}

其中ContactDTO是简单POJO类。

关于Android:联系人列表名称重复,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34150198/

10-10 04:49