如何突出显示长按以创建上下文菜单的项目?

How can I highlight an item which was long-pressed to create a ContextMenu?

我有一个 RecyclerView,其中的每个项目都可以长按以显示上下文菜单。我想突出显示长按的项目,以便用户可以在 select 菜单中的任何内容之前看到并直观地确认它是哪个项目(这样他们就不会错误地删除错误的项目, 例如).

我可以通过添加背景颜色使项目高亮显示,但如果用户随后关闭上下文菜单(或者如果 selected 菜单item 是一个不会将用户带到新的 activity).

我有以下内容来创建菜单:

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);

    if (v.getId()==R.id.list_item) {
        // Highlight selected item
     v.setBackgroundColor(getResources().getColor(R.color.browser_actions_bg_grey));
        // Inflate menu
        MenuInflater inflater = this.getMenuInflater();
        inflater.inflate(R.menu.menu_long_press_chart_name, menu);
    }
}

我假设我需要在 onContextMenuClosed 中做一些事情,但我看不到我需要做什么:

public void onContextMenuClosed(Menu menu) {
        super.onContextMenuClosed(menu);
}

我在 menu 变量中看不到任何显示哪个项目打开它的内容。

选中 this answer,它提供了一种在上下文菜单关闭时收到通知的方法。

通过在 onContextMenuClosed 中执行以下操作解决了这个问题(mRecyclerView 是包含所有项目的 RecyclerView):

public void onContextMenuClosed(Menu menu) {
    super.onContextMenuClosed(menu);

    View thisItem;

    for(int ii=0; ii< mRecyclerView.count(); ii++) {
       thisItem = mRecyclerView.getChildAt(ii);
       if(thisItem.getId() == R.id.list_item) {
           thisItem.setBackgroundColor(getResources().getColor(R.color.fui_transparent));
       }
    }
}