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

今天讲一下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这个名称- -

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

效果如下:


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值