3

我知道如何獲取遊標中的聯繫人姓名和號碼,但是當我將它們放在列表視圖中時,我會在單獨的行中獲取同一聯繫人的多個號碼,即如果聯繫人有更多比一個數字,所有這些數字都顯示出來。我怎樣才能爲每個聯繫人選擇一個號碼?爲每個聯繫人提供一個電話號碼的遊標

Uri uri = Phone.CONTENT_URI; 
String[] projection = { Phone.DISPLAY_NAME, Phone.NUMBER, Phone._ID }; 
String sortOrder = Phone.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; 

Cursor cursor = managedQuery(uri, projection, null, null, sortOrder); 

感謝您的任何幫助提前!

回答

2

如果我把你的權利,你想顯示每DISPLAY_NAME只有一個號碼不顧一切別人,你可以使用這個技巧:

String selection = "1) GROUP BY (" + Phone.DISPLAY_NAME; 
Cursor cursor = managedQuery(uri, projection, selection , null, sortOrder); 

編輯簡短的解釋:它是一種SQL注入的:它會在WHERE的部分查詢中插入1,使其始終爲真,並且添加GROUP BY,不受支持​​

+0

哇,這實際上工作!謝謝!那麼我的整個SELECT語句怎麼看呢?我的意思是1在哪裏進來?你也提到這是一個黑客攻擊,這是一個可以接受的方式嗎?即如果我需要擴展代碼,我可以在未來受苦嗎? – Phat7

+0

正如我所說的,它是sql注入 - 所以如果谷歌決定限制'選擇',它可能會停止工作。然而,它似乎仍然是故意的方式。 – Vladimir

+0

這是否意味着你可以在'selection'中使用其他的sql語句,比如'LIMIT'? – Phat7

相關問題