您想知道我们是否可以获取列表中定义的字段的值,例如来自数据库的id onContextItemSelected()?我创建上下文菜单的代码固定在下面,帮助赞赏,thnx
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
long clickedPosition = info.id;
switch (item.getItemId()) {
case NEW_MENU_ITEM:
//callActivity(1);
break;
case SAVE_MENU_ITEM:
//callActivity(2);
break;
}
return super.onContextItemSelected(item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, view, menuInfo);
menu.setHeaderTitle("Options");
menu.add(0, NEW_MENU_ITEM, 0, "Delete");
menu.add(0, SAVE_MENU_ITEM, 1, "Rename");
}
以下代码不会从数据库中删除我的ID
long clickedPosition = info.id;
答案 0 :(得分:1)
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
Object obj = getListView().getItemAtPosition(info.position);
String name = obj.toString();
}
答案 1 :(得分:0)
该字段中返回的值完全取决于您的适配器实现。它会传递给id
OnItemClickListener
,这是getItemId()
在您的适配器上返回的值。
如果您使用CursorAdapter
或其变体将数据提供给列表,则_id
列是默认返回的值,除非您修改了此方法。对于ArrayAdapter
,情况并非如此,您必须添加代码才能返回所需的ID。如果您需要传回比单个int
更复杂的数据,则可以使用setTag()
在列表项视图上设置标记,并从ContextMenuInfo
开始检索targetView
是它携带的参数之一。
答案 2 :(得分:0)
您可以通过添加来检索此列表中元素的位置
int id= info.position
在onContextItemSelected
;
希望有所帮助
答案 3 :(得分:0)
将database_id设置为lisviewItem视图的标记。
view.setTag(database_id );
将onContextItemSelected(MenuItem项)中的database_id作为
@Override
public boolean onContextItemSelected(android.view.MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item
.getMenuInfo();
int listPosition = info.position;
switch (item.getItemId()) {
case call:
View view = info.targetView;
String database_id=(String) view.getTag();
return true;
case defaullt:
return true;
}
return super.onContextItemSelected(item);
}