我有一个ListView,允许用户长按项目以获取上下文菜单。我遇到的问题是确定他们长按的ListItem。我有3列,(ID,文本,评论)。单击时我需要检索ID值。
我试过这样做:
@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getTitle() == "Delete") {
View view = getWindow().getDecorView().findViewById(android.R.id.content);
//The rowId receive the ID clicked from the listview
rowId = ((TextView)view.findViewById(R.id.ID)).getText().toString();
showDialog(0);
} else return false;
return true;
}
但是,我总是从listview的第一项中查找ID。如果我点击listview上的第二项,我只会在列表中收到第一个ID。
请帮忙。
提前感谢。
答案 0 :(得分:1)
使用以下代码获取所选行索引 -
public boolean onContextItemSelected(MenuItem item) {
try {
AdapterContextMenuInfo ctxMenuInfo;
try {
ctxMenuInfo = (AdapterContextMenuInfo) item.getMenuInfo();
} catch (ClassCastException e) {
return false;
}
int selectedPostion = ctxMenuInfo.position;
}
答案 1 :(得分:1)
如果您想从所选视图中提取信息,请尝试此操作。
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
View v = info.targetView;
rowId = ((TextView)v.findViewById(R.id.ID)).getText().toString();