如何从列表视图中从 onItemClick() 获得的列表项的联系人 Uri 中检索数据?
Posted
技术标签:
【中文标题】如何从列表视图中从 onItemClick() 获得的列表项的联系人 Uri 中检索数据?【英文标题】:How to retrieve data from contact Uri of a list item obtained from onItemClick() in listview? 【发布时间】:2014-10-30 17:21:57 【问题描述】:我如何从列表视图中的 uri 获取联系人详细信息? .我已经从列表视图中获得了所选联系人的联系人 uri。以下 sn-p 是我尝试过但不起作用的。更令人惊讶的是,Logging 语句甚至都不执行!
@Override
public void onItemClick(
AdapterView<?> parent, View item, int position, long rowID)
// Get the Cursor
Cursor cursor = ((SimpleCursorAdapter) parent.getAdapter()).getCursor();
// Move to the selected contact
cursor.moveToPosition(position);
// Get the _ID value
mContactId = cursor.getLong(CONTACT_ID_INDEX);
// Get the selected LOOKUP KEY
mContactKey = cursor.getString(CONTACT_KEY_INDEX);
// Create the contact's content Uri
mContactUri = Contacts.getLookupUri(mContactId, mContactKey);
// ListView Clicked item index
String id=new String();
String name = new String();
String hasPhone = new String();
int idx;
Cursor cursor1 = getActivity().getContentResolver().query(mContactUri, null, null, null, null);
idx = cursor1.getColumnIndex(ContactsContract.Contacts._ID);
id = cursor1.getString(idx);
idx = cursor1.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
name = cursor1.getString(idx);
idx = cursor1.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER);
hasPhone = cursor1.getString(idx);
Log.i("Phone Number","The phone number is: "+hasPhone);
Log.i("Name","The name is: "+name);
/*
* You can use mContactUri as the content URI for retrieving
* the details for a contact.
*/
这是单击列表视图项的特定时间的日志。
09-05 21:55:07.663: I/am_on_resume_called(25140): [0,com.laer.okgo.PersonListActivity]
09-05 21:55:07.738: W/Adreno-GSL(25140): <ioctl_kgsl_device_getproperty:663>: mmap failed: errno 22 Invalid argument
09-05 21:55:07.738: I/Adreno-EGL(25140): <qeglDrvAPI_eglInitialize:320>: EGL 1.4 QUALCOMM Build: I10246dbd022c719c705be805d5642cc8fdfbd2a2Date: 03/10/14
09-05 21:55:07.739: I/CanvasContext(25140): Initialized EGL, version 1.4
09-05 21:55:13.932: I/ImageButton(25140): Clicked!!
这是列表视图在ImageButton
启动后显示的位置
09-05 21:55:13.941: I/am_on_paused_called(25140): [0,com.laer.okgo.PersonListActivity]
这是当我单击列表项时。
09-05 21:55:17.825: I/am_on_resume_called(25140): [0,com.laer.okgo.PersonListActivity]
也是一个奖励问题。如何更改列表视图的主题/样式?如果有人能指出我正确的方向,那就太好了!
【问题讨论】:
您使用OnItemClickListener
或OnListItemClick()
监听ListView
OnListItemClick()
不起作用,因为我正在使用带有LoaderManager.LoaderCallbacks<Cursor>
接口的AdapterView
。整个代码也在一个片段中。
Styles for ListView 或查看androidHive
不能用AdapterView
代替扩展BaseAdapter
类吗?以下答案给了我相互矛盾的想法...***.com/a/16796329
09-05 21:55:13.932: I/ImageButton(25140): Clicked!!
点击列表项时会出现这种情况吗?
【参考方案1】:
现在这真的是我的错。我点击了错误的 UI 元素。有两个名称相似的按钮。我没有意识到这一点。大声笑我搞砸了大时间!浪费了很多时间... 故事的寓意就是让您的 UI/UX 元素具有独特且易于区分的名称!
【讨论】:
以上是关于如何从列表视图中从 onItemClick() 获得的列表项的联系人 Uri 中检索数据?的主要内容,如果未能解决你的问题,请参考以下文章
Android OnItemClick 无法将加载的 SQL 数据库加载到列表视图中
Android ListView 在 onItemClick 之后修改