oveToFirst()){ int cc1 = c.getColumnIndex(Groups._ID); int cc2 = c.getColumnIndex(Groups.TITLE); do{ String id = c.getString(cc1); String ti = c.getString(cc2); gid.add(id); gname.add(ti); Log.i(TAG, ti); }while(c.moveToNext()); } c.close(); int len = gid.size(); /// 总共有多少个群组 c = getContentResolver().query(Data.CONTENT_URI, new String[]{GroupMembership.CONTACT_ID, GroupMembership.GROUP_ROW_ID}, Data.MIMETYPE + "= ", new String[]{GroupMembership.CONTENT_ITEM_TYPE}, null); if(c.moveToFirst()){ int cc1 = c.getColumnIndex(GroupMembership.CONTACT_ID); int cc2 = c.getColumnIndex(GroupMembership.GROUP_ROW_ID);// group ID do{ String id = c.getString(cc1); String groupId = c.getString(cc2); Item remark = list.get(id); if(remark == null){ remark = new Item(); list.put(id, remark); } for(int i = 0; i < len; i++){ if(gid.get(i).equals(groupId)){ remark.group += gname.get(i)+" ";// 一个人可能有多个群组 } } }while(c.moveToNext()); } c.close(); gid = null; gname = null; Log.i(TAG, "end"); if(data.list.size() == 0) data.list.clear(); Collection- vs = list.values();
for(Item it : vs) data.list.add(it); Log.i(TAG, "size" + data.list.size()); }
class ViewHolder { TextView name, note; TextView number, address; TextView group, company; TextView email, workTel; TextView fnumber; } class Item { String name; // 姓名 String number; // 电话号码 String group=""; // 群组 String note; // 备注 String address; // 家庭地址 String fnumber; // 家庭号码 String company; // 所在公司 String workTel; // 工作号码 String email; // 邮箱 }
group = "" ,是因为某些人可能属于多个分组,为了在拼接字符串时不会有null所以赋予""
在进行一系列查询的时候应该注意一点的就是:Contacts表中_ID是唯一的,也是和其他表关联的,也就是说,得到这个Id后,其他信息都可以通过它得到。那么反过来利用其他值(如:手机号)来得到这个id后,也就可以得到其他相关的信息了。
|