【问题标题】:Get Position of ContextMenu Selected in RecycleView获取在 RecyclerView 中选择的上下文菜单的位置
【发布时间】:2016-01-04 18:07:07
【问题描述】:

通常对于ListViews,当我想获得用户在上下文菜单上单击的位置时,我会这样做。

public boolean onContextItemSelected(android.view.MenuItem item) {

    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    position = info.position;

但是,自从我切换到RecycleView 后,我现在在这里得到了一个空指针

上面的代码在我的主要Activity (Fragment) 中,而onCreateContextMenu()adapter 中按照新的方式完成。

ItemView.setOnCreateContextMenuListener(this); 也在适配器中完成(特别是构造函数)。

【问题讨论】:

    标签: android nullpointerexception android-recyclerview adapter contextmenu


    【解决方案1】:

    有 3 个选项:

    1. 你可以通过getAdapterPosition()而不是MenuItem的订单

      private class ChipViewHolder extends RecyclerView.ViewHolder implements View.OnCreateContextMenuListener {
          public ChipViewHolder(View itemView) {
              super(itemView);
              itemView.setOnCreateContextMenuListener(this);
          }
      
          @Override
          public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
              menu.setHeaderTitle("Select The Action");
              menu.add(0, ACTION_1_ID, getAdapterPosition(), "action 1");
              menu.add(0, ACTION_2_ID, getAdapterPosition(), "action 2");
          }
      }
      

      然后,在Activity 中收听onContextItemSelected() 并通过getOrder() 检索位置

      @Override
      public boolean onContextItemSelected(MenuItem item) {
          int clickedItemPosition = item.getOrder();
          // do something!
          return super.onContextItemSelected(item);
      }
      
    2. 使用 RecyclerView 的自定义实现,例如 Teovald/ContextMenuRecyclerView one

    3. 设置MenuItem的clickListener(见https://stackoverflow.com/a/33179957/1658267)并在那里处理它。

    是的,这是非常不方便的 API。你可以选择你最喜欢的。

    【讨论】:

    • 选项 #1 成功了。我所要做的就是在 Activity 中添加一行代码(并替换我上面的代码);其他一切都设置好了。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多