安卓。将联系人显示为 ListView

标签 android listview android-contacts listactivity

我想在 ListView 中显示联系人并对所有联系人添加操作,比如点击特定联系人它应该显示电话号码、邮件 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); do while 循环。另一个问题是,您在 UIThread(通过光标循环)上工作太多,因此如果您的联系人数量巨大,用户将看到黑屏或 ANR。学习使用AsyncQueryHandlerCursorAdapter,都在我的链接和nikki的链接中

为什么不看看 Android 源代码中的默认联系人应用程序: 下面是我的自定义联系人应用程序。 enter image description here

https://github.com/android/platform_packages_apps_contacts

关于安卓。将联系人显示为 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4427574/

相关文章:

java - 列出应用程序与之通信的 IP

java - 在哪里保存 Android 应用程序中的电子邮件密码(使用 JavaMail API)?

java - android listview null 试图 setAdapter()

android - 按电话号码搜索联系人

android - 无法识别 WhatsApp 联系人

android - 如何在加载谷歌地图和添加标记时显示进度条

android - 以编程方式更改android设备的输入法android

java - 自定义 ListView 没有响应 itemClickListener

android - listview setOnClickListener 从 listview 返回错误的数据

android - 如何从 Android 设备仅获取电话号码联系人