2010-12-13 50 views
9

我想在列表視圖中顯示聯繫人,並在所有聯繫人上添加操作,例如點擊特定聯繫人時,應顯示電話號碼,郵件標識和特定聯繫人的刪除...Android。將聯繫人顯示爲列表視圖

import android.app.ListActivity; 
import android.content.ContentResolver; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.view.Menu; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class CPDemo1 extends ListActivity { 


    @SuppressWarnings("unchecked") 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    String str[]= {"datta","vivek","Nagesh sir","shiv"}; 
    String name; 

     ContentResolver cr = getContentResolver(); 
     Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
     int nameIdx = cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME); 

     if (cursor.moveToFirst()) 


     do { 

     int x = 0; 

     name = cursor.getString(nameIdx); 
     str[x]= name; 
       x++; 
      ArrayAdapter arr = new ArrayAdapter(this, android.R.layout.simple_list_item_1,str); 

      setListAdapter(arr); 
} while(cursor.moveToNext()); 

     } 
+0

請告訴我阻止你做你想要什麼? – WarrenFaith 2010-12-13 09:57:42

+0

@WarrenFaith ...我想顯示電話簿的聯繫人,但我無法這樣做......在我的代碼中,名稱變量通過電話簿中的一個聯繫人覆蓋硬核心值..我想顯示所有聯繫人首先在列表視圖中,然後添加行動...只是看到我在哪裏丟失循環做到這一點.. – Datta 2010-12-13 10:21:06

回答

1

這裏是您發佈的代碼稍加改動,它會解決你的問題。

if (cursor.moveToFirst()) 
    { 

     int x = 0; 
    do { 



    name = cursor.getString(nameIdx); 
    Log.d("CONTENT",name); 
    str[x]= name; 
      x++; 
     } while(cursor.moveToNext()); 

    ArrayAdapter<String> arr = new ArrayAdapter<String>(
     this, android.R.layout.simple_list_item_1,str); 

    setListAdapter(arr); 
10

您當前的代碼中的問題是爲每個循環創建新的適配器。請從do while loop中移除ArrayAdapter arr = new ArrayAdapter(this, android.R.layout.simple_list_item_1,str); 。另一個問題是,你在UIThread上工作太多(通過光標循環),所以如果你的聯繫人數量很大,用戶會看到黑屏或ANR。瞭解如何使用AsyncQueryHandlerCursorAdapter,這一切都在我的鏈接和Nikki的鏈接

而且你爲什麼不看看在Android源代碼默認通訊錄應用程序: 下面是我的自定義聯繫人應用程序。 enter image description here

https://github.com/android/platform_packages_apps_contacts

+4

對於downvoter,你應該留下一個原因,你downvote我的答案。有了這樣的一般問題,不要指望複製粘貼運行代碼片段。我的回答幫助他改進他提供的代碼。 – 2013-05-22 01:27:42

相關問題