SimpleOnItemTouchListener

设置recyclerviewitem的点击事件,想偷懒,就直接在onBindViewHolder里,获取itemview然后setonclicklistener就完事了。

如果想优雅一点,就用下边这种
给recyclerview添加一个touchlistener

rv.addOnItemTouchListener(ItemTouchListenerRV(rv))

简单的实现如下,不过这种设置完
可能发现你给item设置了状态背景,可item的背景不会改变,
其实很简单,在item的跟布局上加上如下属性即可android:clickable="true"

import android.support.v7.widget.RecyclerView;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;

/**
 * Created by charlie.song on 2018/5/8.
 */

public class RvItemTouchListener extends RecyclerView.SimpleOnItemTouchListener {
    GestureDetector gestureDetector;
    RecyclerView rv;

    public RvItemTouchListener(RecyclerView rv) {
        this.rv = rv;
        gestureDetector = new GestureDetector(rv.getContext(), gestureListener);
    }

    @Override
    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
        return gestureDetector.onTouchEvent(e);
    }

    @Override
    public void onTouchEvent(RecyclerView rv, MotionEvent e) {
        super.onTouchEvent(rv, e);
        gestureDetector.onTouchEvent(e);
    }

    private GestureDetector.SimpleOnGestureListener gestureListener = new GestureDetector.SimpleOnGestureListener() {
        @Override
        public boolean onSingleTapUp(MotionEvent e) {
            View child = rv.findChildViewUnder(e.getX(), e.getY());
            if (child != null) {
                int position = rv.getChildAdapterPosition(child);
                if (listener != null) {
                    listener.singleTab(position, rv.getChildViewHolder(child));
                }
            }
            return super.onSingleTapUp(e);
        }

        @Override
        public void onLongPress(MotionEvent e) {
            super.onLongPress(e);
        }
    };
    public RvItemClickListener listener;

    public interface RvItemClickListener {
         void singleTab(int position, RecyclerView.ViewHolder viewHolder);
         void longPress(int position);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Tangram是阿里出品、用于快速实现组合布局的框架模型,在手机天猫Android&iOS版 内广泛使用 该框架提...
    wintersweett阅读 3,416评论 0 1
  • 【Android 控件 RecyclerView】 概述 RecyclerView是什么 从Android 5.0...
    Rtia阅读 308,021评论 27 439
  • 本文出自 “阿敏其人” 简书博客,转载或引用请注明出处。 RecyclerView不属于MD系列,但是却常常一起使...
    阿敏其人阅读 4,797评论 3 44
  • 目录 ​ 1. RecyclerView与ListView的异同 ​ 2. RecyclerView的使用...
    plus1s阅读 1,236评论 0 10
  • 我不害怕母亲,我是非常厌恶她。 我对父亲有恐惧,但是他并不怎么管我。 这两个人在我身上的叠加效应, 就想一个人负责...
    whalecao阅读 272评论 0 0