我有这些代码基本上用一个ListView显示在联系人列表中的名字,我想,当单击每个单独的名称,以获得他们的电话号码:Android开电话号码
final ContentResolver cr = getContentResolver();
final Cursor c = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
myCursorAdapter = new SimpleCursorAdapter(this, R.layout.list_item, c, new String[] {ContactsContract.Contacts.DISPLAY_NAME}, new int[]{R.id.TVRow}, 0);
myPhoneList.setAdapter(myCursorAdapter);
myPhoneList.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
c.moveToPosition(position);
Toast.makeText(getApplicationContext(), c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)), Toast.LENGTH_SHORT).show();
}
});
在onItemClick
方法
GetColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)
返回-1,因此我无法使用此方法获取电话号码。
我也尝试打印出光标c
的所有列,它返回34列,但似乎与电话号码有关的唯一列是HasPhoneNumber
。
那么问题在哪里,我该如何解决?谢谢!
更新后的版本,其中String
阵列通过构建myCursorAdapter
改变:
final ContentResolver cr = getContentResolver();
final Cursor c = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
myCursorAdapter = new SimpleCursorAdapter(this, R.layout.list_item, c, new String[] {ContactsContract.CommonDataKinds.Phone.NUMBER}, new int[]{R.id.TVRow}, 0);
myPhoneList.setAdapter(myCursorAdapter);
myPhoneList.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
c.moveToPosition(position);
Toast.makeText(getApplicationContext(), c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)), Toast.LENGTH_SHORT).show();
}
});
我想更新的代码会显示在ListView的电话号码,但我得到了一个错误说“栏目'data1'不存在“。
它工作!谢谢! –