2
我有一個關於android聯繫人的問題。我想查詢所有未分配給任何組的聯繫人,但我不確定搜索條件,我的意思是,有時GroupMembership.GROUP_ROW_ID爲空如果聯繫人沒有組,但有時GroupMembership.GROUP_ROW_ID爲-1 。任何人都可以告訴我如何搜索所有聯繫人沒有組?如何搜索聯繫人沒有組
我有一個關於android聯繫人的問題。我想查詢所有未分配給任何組的聯繫人,但我不確定搜索條件,我的意思是,有時GroupMembership.GROUP_ROW_ID爲空如果聯繫人沒有組,但有時GroupMembership.GROUP_ROW_ID爲-1 。任何人都可以告訴我如何搜索所有聯繫人沒有組?如何搜索聯繫人沒有組
這是一個粗略的,但它適用於我。如果不進行兩次查詢,我看不到一個簡單的方法找到沒有組的聯繫人。
很可能您可以優化查詢以刪除重複項,從而消除對「foundIds」集的需求。
private Cursor getNoGroupsCursor() {
Set<String> groupIds = new HashSet<String>();
Set<String> foundIds = new HashSet<String>();
// Get the group membership
Cursor gmCursor = getContentResolver().query(
Data.CONTENT_URI,
new String[] { Data.CONTACT_ID, Data.MIMETYPE, Data.DATA1 },
Data.MIMETYPE + " = '" + GroupMembership.CONTENT_ITEM_TYPE
+ "'", null, null);
while (gmCursor.moveToNext()) {
String groupTitle = gmCursor.getString(2);
// We need to pre-parse the group ids to find all the ones that
// have a group
if (groupTitle != null && !"-1".equals(groupTitle)) {
groupIds.add(gmCursor.getString(0));
}
}
gmCursor.close();
// Get the contacts
gmCursor = getContentResolver().query(Data.CONTENT_URI,
new String[] { Data.CONTACT_ID, Data.DISPLAY_NAME }, null,
null, "2 ASC");
// We want a projected matrix cursor that contains the contact ID and
// group name, rather than the group ID
MatrixCursor mc = new MatrixCursor(PROJECTION_GROUPS);
while (gmCursor.moveToNext()) {
String id = gmCursor.getString(0);
if (!foundIds.contains(id) && !groupIds.contains(id)) {
mc.addRow(new Object[] { gmCursor.getString(0),
gmCursor.getString(1), null, null });
foundIds.add(id);
}
}
gmCursor.close();
return mc;
}
是的,我知道身份證很長,而不是字符串。咩。 – 2012-01-29 17:39:02
感謝您的回覆,現在我只能用兩步搜索來解決這個問題,也許我們可以找到更好的方法,比如搜索view_data視圖。 – user1145055 2012-02-03 05:18:20