【问题标题】:Retrieving and displaying a contact name from a contact id while using a SimpleCursorAdapter在使用 SimpleCursorAdapter 时从联系人 ID 中检索和显示联系人姓名
【发布时间】:2011-12-27 05:28:38
【问题描述】:

我正在使用 sqlite 数据库存储有关手机联系人的信息。 我要存储的字段是:_id, contact_id, body 其中_id 是行的ID,contact_id 是电话联系人的ID,body 只是一个简单的文本,它是我要存储的实际信息。

我正在使用 SimpleCursorAdapter 将数据映射到视图,如下所示:

Cursor cursor = database.fetchInformation(); // fetch info from DB
    String[] from = new String[] { CONTACT_ID, BODY };
    int[] to = new int[] { R.id.contact, R.id.body };

    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.row, cursor, from, to);
    getListView().setAdapter(adapter);

我真正想要的是获取与此 CONTACT_ID 关联的联系人姓名,并在视图中显示

我似乎找不到简单的解决方案。我试过实现我自己的 SimpleCursorAdapter 并重写 setViewText(TextView, String) 但它没有用。此外,对于这样一个简单的任务,它似乎过于复杂。

有什么帮助吗?谢谢。

【问题讨论】:

    标签: android android-listview android-contacts simplecursoradapter


    【解决方案1】:

    你真的有两个选择:

    1) 您可以创建一个 MatrixCursor,其中包含您希望绑定到 ListView 的所有信息。虽然这样做并不难,但它可能不是最有效地使用内存,因为您需要获取光标中每个联系人的姓名。

    2) 你可以从 CursorAdapter 继承。实现适当的 newView 和 bindView 方法非常简单。在 bindView 中,您只需查询手机的联系人内容提供商即可获取当前正在绑定的联系人的姓名。

    【讨论】:

    • 我选择了选项 2,现在可以正常工作了。谢谢。
    【解决方案2】:

    试试这个

    String where=PEOPLE.CONTACT_ID+"="+requiredId;
    String[] projection={People.Name};//u only need name right?
    int[] to = new int[] {R.id.body };//if body is ur text view
    
    Cursor cursor = getContentResolver().query(People.CONTENT_URI,projection,where,null, null);
    
    ListAdapter adapter=new SimpleCursorAdapter(this,R.layout.row,result,projection,to);
    
    setListAdapter(adapter);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      相关资源
      最近更新 更多