Android手机联系人数据库分析(三)

2014-11-24 01:45:44 · 作者: · 浏览: 10
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后,也就可以得到其他相关的信息了。