如何从listview android中的姓名获取联系方式

Posted

技术标签:

【中文标题】如何从listview android中的姓名获取联系方式【英文标题】:how to get contact detail from name in listview android 【发布时间】:2012-05-20 22:25:47 【问题描述】:

我使用了这段代码,但结果不是我在列表视图中选择的名称的信息,而是来自其他名称的信息。

contactmanager.java

protected void onListItemClick(ListView l, View v, int position, long id)

    super.onListItemClick(l, v, position, id);
    Intent i = new Intent(this, ContactEditor.class);
    i.putExtra(ContactsContract.Contacts._ID, id);
    startActivityForResult(i, 2);

ContactEditor.java

private Long mRowId;
mRowId = savedInstanceState != null ? savedInstanceState.getLong(ContactsContract.Contacts._ID):null;
    if (mRowId == null)
    Bundle extras = getIntent().getExtras();
    mRowId = extras != null ? extras.getLong(ContactsContract.Contacts._ID):null;
    

populateFields();
private void populateFields()
    ContentResolver cr = getContentResolver();
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
    if (mRowId != null)         
    
        while (cur.moveToNext()) 
        String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
        String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
        mContactNameEditText.setText(name);
        
    
   

【问题讨论】:

【参考方案1】:

您必须询问您想要的 id。这会询问每个联系人,并且只显示最后一个:

Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if (mRowId != null)         

试试这样的:

if (mRowId != null)         

    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, 
            ContactsContract.Contacts._ID + "=" + mRowId, null, null);

【讨论】:

SAAAAAAM.. 你的回答让我非常满意.. 4 天我被困在这种情况下。非常感谢兄弟。

以上是关于如何从listview android中的姓名获取联系方式的主要内容,如果未能解决你的问题,请参考以下文章

如何从android中的联系人姓名获取联系人的号码

Android通过电话号码有效地获取联系人姓名以在ListView中显示

如何在单击android中的listview项目时从数据库中获取id

如何从存储在数据库中的 Listview 获取值到另一个活动?使用 Android 和 Mysql

如何从 Android 中的联系人中获取 ContactNumbers 数组的联系人姓名?

ListView异步下载图像Android中的图像设置不正确