簡體   English   中英

Android系統。將聯系人顯示為列表視圖

[英]Android. to display contacts as list view

我想在列表視圖中顯示聯系人並在所有聯系人上添加操作,例如單擊特定聯系人時應顯示電話號碼,郵件ID和刪除特定聯系人...

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());

        }

當前代碼中的問題是為每個循環創建新的適配器。 只需移動ArrayAdapter arr = new ArrayAdapter(this, android.R.layout.simple_list_item_1,str); out do while loop 還有一個問題,你在UIThread (循環光標)上工作太多,所以如果你的聯系人數很多,用戶會看到黑屏或ANR。 學習使用AsyncQueryHandlerCursorAdapter ,它都在我的鏈接和nikki的鏈接中

為什么不看看Android源代碼中的默認聯系人應用程序:下面是我的自定義聯系人應用程序。 在此輸入圖像描述

https://github.com/android/platform_packages_apps_contacts

只需看看下面的鏈接,並嘗試使用此代碼將保存在Android電話簿中的聯系人顯示到您的應用程序中。

http://developer.android.com/resources/samples/ContactManager/index.html

以下是您發布的代碼的一點變化,它將解決您的問題。

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM