安卓之RecyclerView只点击RecyclerView不点击Item

来源:互联网 发布:国内搜索引擎排名算法 编辑:程序博客网 时间:2024/05/16 11:38

 今天讲一下RecyclerView这个控件,使得不点击里面的item,只点击RecyclerView,写了demo随便看看哈~~~

首先先分析为什么我们设置了Recyclerview.setOnClickListener确没办法响应。其实可以看一下源码。

里面源码有这个也有点击事件的。其实直观的分析其实就是点击事件在item里面所以不在RecyclerView,里面也有这个方法的调用,导致RecyclerView的点击事件没办法继续进行。

所以这边呢,我冲这个OnItemTouchListtener这个入手看下面代码:

public static   class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {        private OnClickListener mListener;        public interface OnClickListener {            public void onClick(View view);        }        GestureDetector mGestureDetector;        public RecyclerItemClickListener(Context context, final RecyclerView recyclerView, OnClickListener listener) {            mListener = listener;            mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {                @Override                public boolean onSingleTapUp(MotionEvent e) {                    return true;                }                @Override                public void onLongPress(MotionEvent e) {                }            });        }        @Override public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {            if (view != null && mListener != null && mGestureDetector.onTouchEvent(e)) {                mListener.onClick(view);                return true;            }            return false;        }        @Override public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) { }        @Override        public void onRequestDisallowInterceptTouchEvent (boolean disallowIntercept){}    }}


我们自己写一个虽然里面我们也设置成为onClick设置为我们需要的点击事件。

这个时候我们写好了点击事件。但是我这边写的是一个内部类。。。。。

所以你们看着使用

第二步就是调入代码了呗

        mRecyclerview.addOnItemTouchListener(new RecyclerItemClickListener(this,mRecyclerview, new RecyclerItemClickListener.OnClickListener() {            @Override            public void onClick(View view) {                Toast.makeText(context,"hello",Toast.LENGTH_LONG).show();            }        }));
原本这个是Item这个的点击事件。。。然后我改成了Recyclerview的点击事件了。。所以还是会保留一下Item这个名称- -

然后加到这边了。。其实差不多咯。

效果如下:


原创粉丝点击