How to create context menu for RecyclerView

后端 未结 21 2662
日久生厌
日久生厌 2020-11-28 01:20

How do I implement context menu for RecyclerView? Apparently calling registerForContextMenu(recyclerView) doesn\'t work. I\'m calling it from a fra

21条回答
  •  温柔的废话
    2020-11-28 02:07

    Here is a clean way to use menu context on RecyclerView items

    First, you need an item position

    In Adapter class:

     /**
     * Custom on long click item listener.
     */
    onLongItemClickListener mOnLongItemClickListener;
    
    public void setOnLongItemClickListener(onLongItemClickListener onLongItemClickListener) {
        mOnLongItemClickListener = onLongItemClickListener;
    }
    
    public interface onLongItemClickListener {
        void ItemLongClicked(View v, int position);
    }
    

    In onBindViewHolder hook the custom listener:

            // Hook our custom on long click item listener to the item view.
            holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    if (mOnLongItemClickListener != null) {
                        mOnLongItemClickListener.ItemLongClicked(v, position);
                    }
    
                    return true;
                }
            });
    

    In MainActivity (Activity/Fragment) create a field:

    private int mCurrentItemPosition;
    

    In your Adapter object set the custom listener:

        mAdapter.setOnLongItemClickListener(new FileAdapter.onLongItemClickListener() {
            @Override
            public void ItemLongClicked(View v, int position) {
                mCurrentItemPosition = position;
            }
        });
    

    Now you have a yummy position for any item you long clicked on it

提交回复
热议问题