获取 ListItem ContextMenu 中的选定项目
Posted
技术标签:
【中文标题】获取 ListItem ContextMenu 中的选定项目【英文标题】:Get selected item in a ListItem ContextMenu 【发布时间】:2012-06-24 07:11:14 【问题描述】:我有一个 ListView,它在长按其中一个元素时创建一个 ContextMenu。如何找到在创建此上下文菜单的 ListView 中选择的元素(不是选定的 MenuItem)?这是我的代码:
list.setOnCreateContextMenuListener(new OnCreateContextMenuListener()
@Override
public void onCreateContextMenu(ContextMenu menu, final View v,
ContextMenuInfo menuInfo)
menu.setHeaderTitle("Actions");
android.view.MenuItem remove = menu.add("Remove");
final int selectedItem = ((ListView)v).getSelectedItemPosition();
remove.setOnMenuItemClickListener(new OnMenuItemClickListener()
@Override
public boolean onMenuItemClick(android.view.MenuItem item)
doSomething(listAdapter.getItem(selectedItem)); // NPE here
return true;
);
);
请注意,我不想要从上下文菜单中选择的项目,而是触发此上下文菜单的 ListView 项目。
【问题讨论】:
【参考方案1】:你需要AdapterContextMenuInfo
。
下面的片段会帮助你
public boolean onContextItemSelected(MenuItem item)
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
String[] names = getResources().getStringArray(R.array.names);
switch(item.getItemId())
case R.id.edit:
Toast.makeText(this, "You have chosen the " + getResources().getString(R.string.edit) +
" context menu option for " + names[(int)info.id],
Toast.LENGTH_SHORT).show();
return true;
…………………..
default:
return super.onContextItemSelected(item);
【讨论】:
是的,只要你说我需要AdapterContextMenuInfo
,我就爱上了它:)
它适用于我,它适用于ArrayList
,就像Playlist_Title.get(info.position)
它适用于那些使用 ArrayList 的人。谢谢你。 :)以上是关于获取 ListItem ContextMenu 中的选定项目的主要内容,如果未能解决你的问题,请参考以下文章
在后台加载整个 ListView 并在每个 ListItem 中获取一个 UIControl
在 LongPress 上显示 ContextMenu 以获取 xamarin 表单中的视图
如何获取 TreeViewItem 的 ContextMenu,将 TreeView 作为 DataTemplate
我无法获取我的 SharePoint ListItem 字段