我有這些代碼基本上用一個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'不存在「。
它工作!謝謝! –