2011-08-11 106 views
0

我想在Android上的聯繫號碼,但據我發現了一個教程,它提出了數升序排列,而不是在它們出現在接觸的順序...獲取聯繫人在Android的

我如何修改代碼以從我的聯繫人列表中按照確切的順序獲取數字?

Cursor cursor = getContentResolver().query(Phone.CONTENT_URI, new String[]{Phone.NUMBER}, null,null, null); 
ArrayList <String> nr_formatat = new ArrayList <String>(); 
if (cursor != null) { 

    while (cursor.moveToNext() == true) 

     nr_formatat.add(cursor.getString(cursor.getColumnIndex(Phone.NUMBER))); 
    } 
+1

聯繫人列表的默認訂單按字母升序排列。除非您以任意順序自由地重新排列您的聯繫人列表,在這種情況下,您的本地通訊錄應用程序將處理/存儲該訂單。那是你在做什麼? –

+0

假設我有聯繫人名單:(Anna,0342),(Lulu,0311),(John,0088);它們出現的順序是:0088,0311,0342所以按升序排列,而我真的希望他們通過姓名字母順序:0342,0311,0088感謝您 – Madrugada

回答

0

這取決於您的聯繫人在聯繫人列表中的排列方式。點擊菜單按鈕並點擊「顯示選項」。除此之外,您的問題中沒有足夠的信息來充分回答問題。

從我所看到的,你會以錯誤的方式去做。我會查看這個示例應用程序。它會以不同於您的方式提取聯繫人,並允許您根據需要對其進行排序。

http://developer.android.com/resources/samples/BusinessCard/src/com/example/android/businesscard/index.html

+0

這是按字母順序排列,但得到的數字是按升序排列: (如你所知,我們從兩個不同的地方獲得聯繫人姓名和電話號碼,我按字母順序獲得姓名,而數字是遞增的,我希望我能得到他們之間的對應關係,我必須顯示聯繫人列表 – Madrugada

1

你會了解它的錯誤的方式。您需要根據CONTACT_ID查詢號碼,否則兩者之間不會有任何對應關係。看看this tutorial

+0

謝謝(pCur.moveToNext()){ \t \t //用手機做點什麼 \t} – Madrugada

+0

你不必改變你得到這個循環的方式嗎?電話號碼,你仍然可以使用getColumnIndex(Phone.NUMBER)方法。唯一的變化是查詢sqlite數據庫。 –

0

以下應工作,如果: (安娜,0342)具有ID 1,(露露,0311)已ID 2,(約翰,0088)具有ID 3

Cursor cursor = getContentResolver().query(Phone.CONTENT_URI, new String[]{Phone.NUMBER}, null,null, new String[]{Phone.ID}); 
ArrayList <String> nr_formatat = new ArrayList <String>(); 
if (cursor != null) { 

    while (cursor.moveToNext() == true) 

     nr_formatat.add(cursor.getString(cursor.getColumnIndex(Phone.NUMBER))); 
    } 

ContentResolver的的最後一個變量() .query()採用sortorder。因此,如果您的聯繫人列表也在ID上進行排序,則可以在此處添加ID等內容。 ConecntResolver().Query() info here.