获取 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 字段

PyQt5 (Python):通过 contextmenu 从 qpushbutton 获取值

获取或设置当前窗口contextmenu事件的事件处理函数