OnLongItemClick in RecyclerView

前端 未结 1 891
鱼传尺愫
鱼传尺愫 2020-12-01 12:36

I am starting to use RecyclerView in Android. Things work fine until I implement touch listener for my adapter.

From this topic:

https://stackoverflow.com/a/

相关标签:
1条回答
  • 2020-12-01 13:09

    You can add listeners in your custom adapter implementation. It will be something like:

    public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
    
        public interface OnItemClickListener {
            public void onItemClicked(int position);
        }
    
        public interface OnItemLongClickListener {
            public boolean onItemLongClicked(int position);
        }
    
        private Fragment mFragment;
    
        public static class ViewHolder extends RecyclerView.ViewHolder {
            public View v;
    
            public ViewHolder(View v) {
                super(v);
                this.v = v;
            }
        }
    
        public RecyclerViewAdapter(Fragment fragment) {
            mFragment = fragment;
        }
    
        @Override
        public void onBindViewHolder(ViewHolder holder, final int position) {
            holder.v.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mFragment.onItemClicked(position);
                }
            });
            holder.v.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    mFragment.onItemLongClicked(position);
                    return true;
                }
            });
        }
        . . .
    }
    

    Note interfaces definition at the beginning. This way you're passing onClick and onLongClick events to your fragment for handling. Pretty much convenient, you know

    0 讨论(0)
提交回复
热议问题