2014-02-13 95 views
0

我想檢索所有聯繫人,然後根據它是否已加星標將它們放入不同的數組列表中。 我想中檢索所有聯繫,並做他們顯示單獨的他們是否出演的基礎上,或不收藏夾聯繫人fr0m聯繫人分區

contactId=8333; 
Uri uri = ContactsContract.Contacts.CONTENT_URI; 

    String[] projection = new String[] { ContactsContract.Contacts._ID, 
    ContactsContract.Contacts.DISPLAY_NAME, 
    ContactsContract.Contacts.PHONETIC_NAME }; 
    String selection = ContactsContract.Contacts._ID + " = ?"; 
    Cursor cur= mContext.getContentResolver().query(uri, projection, selection, 
       new String[] {contactId}, null); 
    if (cur != null && cur.moveToFirst() && cur.getCount() > 0) { 

int idIndex = cur.getColumnIndex(ContactsContract.Contacts._ID); 

int displayNameIndex = cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME); 

int phoneticNameIndex = cur.getColumnIndexOrThrow(ContactsContract.Contacts.PHONETIC_NAME); 

do { 

    String id = cur.getString(idIndex); 
    String name = cur.getString(displayNameIndex); 
    String star=cur.getString(cur.getColumnIndex(ContactsContract.Data.STARRED)); 
    String value=cur.getString(cur.getColumnIndex(ContactsContract.Contacts.STARRED)); 

         } while (cur.moveToNext()); 
     } 

變星總是空和檢索變量值就拋出異常。

有人可以告訴我如何知道檢索所有聯繫人數據後,他們的聯繫是否已加星標?

+0

我的光標在通過光標迭代後,現在已經檢索到所有數據我想檢索/知道該聯繫人是否已加星標或不以..如我正在檢索名稱和所有。 –

回答

2

如果要從光標請求STARRED列,則應將其包含在projection中。

+0

No ..我想要檢索所有聯繫人,然後我wana知道出演的價值。即該聯繫是否被盯住,所以我可以將他們放在不同的組中。取決於它是否被盯住。 –

+0

您要求從數據庫中列出'ContactsContract.Contacts._ID,ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.PHONETIC_NAME' - 是三列之一中包含的「加星標」值嗎? – Smutje

+0

你會看到我的光標已經通過光標迭代了所有數據後,我想要檢索/知道這個聯繫人是否已加星標或不以..如我如何retreiving名稱和所有。 –

1

我會用Smutje答案,除非我們錯誤地理解你的問題,否則你需要將STARRED添加到投影中。

+0

我知道我可以做到這一點,但我只會得到主演的聯繫人,但那不是我想要的。我想要檢索所有聯繫人,然後根據它是否已加星標將它們放入不同的數組列表中。 –

+0

我在告訴你在投影中不要選擇STARRED字段。你仍然會得到你所有的聯繫人。或者可能是我錯誤理解。 –