gpt4 book ai didi

安卓。将联系人显示为 ListView

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:28:02 26 4
gpt4 key购买 nike

我想在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com