我使用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),但它不起作用。而且,对于这么简单的任务来说,这似乎过于复杂。
有任何帮助吗?感谢。
答案 0 :(得分:0)
你真的有两个选择:
1)您可以创建一个MatrixCursor,其中包含您希望绑定到ListView的所有信息。虽然执行此操作并不困难,但它可能不是最有效的内存使用,因为您需要获取光标中每个联系人的名称。
2)你可以从CursorAdapter继承。实现适当的newView和bindView方法非常简单。在bindView内部,您只需查询手机的联系内容提供商即可获取当前绑定的联系人姓名。
答案 1 :(得分:0)
试试这个
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);