高效获取联系人列表

来源:互联网 发布:中港金融数据 骗 编辑:程序博客网 时间:2024/05/17 18:03
ArrayList<HashMap<String, Object>> items = new ArrayList<HashMap<String, Object>>();ContentResolver cr = getContentResolver();HashMap<String, ArrayList<String>> hashMap = new HashMap<String, ArrayList<String>>();Cursor phone = cr.query(CommonDataKinds.Phone.CONTENT_URI,new String[] { CommonDataKinds.Phone.CONTACT_ID,CommonDataKinds.Phone.DISPLAY_NAME,CommonDataKinds.Phone.NUMBER,CommonDataKinds.Phone.DATA1// CommonDataKinds.StructuredPostal.DATA3,}, null, null, null);while (phone.moveToNext()) {String contactId = phone.getString(phone.getColumnIndex(CommonDataKinds.Phone.CONTACT_ID));String displayName = phone.getString(phone.getColumnIndex(CommonDataKinds.Phone.DISPLAY_NAME));String PhoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));String address = phone.getString(phone.getColumnIndex(CommonDataKinds.Phone.DATA1));// 以contactId为主键,把同一人的所有电话都存到一起。ArrayList<String> ad = hashMap.get(contactId);if (ad == null) {ad = new ArrayList<String>();ad.add(displayName);ad.add(PhoneNumber);// ad.add(address);hashMap.put(contactId, ad);} else {ad.add(PhoneNumber);} }phone.close();ArrayList<String> tmpList;String tmpStr = "";int k;Iterator iter = hashMap.entrySet().iterator();while (iter.hasNext()) {HashMap.Entry entry = (HashMap.Entry) iter.next();Object key = entry.getKey();Object val = entry.getValue();6tmpList = (ArrayList) val; tmpStr = "";for (k = 1; k < tmpList.size(); k++) {tmpStr = tmpStr + tmpList.get(k) + ',';}tmpStr = GetString(tmpStr);HashMap<String, Object> tmpMap = new HashMap<String, Object>(); tmpMap.put("name", tmpList.get(0)); tmpMap.put("number", tmpStr); tmpMap.put("imgView", R.drawable.ic_launcher);items.add(tmpMap); } return items;}private String GetString(String str) {String strLast = ""; int i = str.lastIndexOf(","); if (i > 0) {strLast = str.substring(0, str.length() - 1); } return strLast.replace(" ", "").replace(",", "\n").replace("+86", "");}
0 0
原创粉丝点击