【发布时间】:2014-05-05 06:17:07
【问题描述】:
我一直在尝试使用复选框制作多联系人选择器列表。我已经创建了多联系人选择器,其中联系人的联系人中至少有一个电话号码。
阙
现在我在ListView 中添加了联系人。但是联系人中出现了单个联系人号码,它采用了保存在Contact应用程序中的第一个电话号码。我已添加 LinkedHashMap 和 Set 以在联系人列表中添加 indexer。
LinkedHashMap 或 Set 是否正在从集合中删除重复值?
如何获取与该联系人姓名关联的所有电话号码?
代码片段:-
ContentResolver cr = getContentResolver();
String selection = Data.HAS_PHONE_NUMBER + " > '" + ("0") + "'";
Cursor cur = cr.query(Data.CONTENT_URI, new String[] { Data.CONTACT_ID, Data.MIMETYPE, Email.ADDRESS,
Contacts.DISPLAY_NAME, Phone.NUMBER }, selection, null, Contacts.DISPLAY_NAME);
Contact contact;
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String id = cur.getString(cur.getColumnIndex(Data.CONTACT_ID));
String mimeType = cur.getString(cur.getColumnIndex(Data.MIMETYPE));
if (allContacts.containsKey(id)) {
// update contact
contact = allContacts.get(id);
} else {
contact = new Contact();
allContacts.put(id, contact);
// set photoUri
contact.setContactPhotoUri(getContactPhotoUri(Long.parseLong(id)));
}
if (mimeType.equals(StructuredName.CONTENT_ITEM_TYPE))
// set name
contact.setContactName(cur.getString(cur.getColumnIndex(Contacts.DISPLAY_NAME)));
if (mimeType.equals(Phone.CONTENT_ITEM_TYPE))
// set phone munber
contact.setContactNumber(cur.getString(cur.getColumnIndex(Phone.NUMBER)));
}
}
cur.close();
// get contacts from hashmap
contacts.clear();
contacts.addAll(allContacts.values());
【问题讨论】:
标签: android android-contentprovider android-contacts