RecyclerView 条目添加的单机和长按事件 - addOnItemTouchListener

 以前使用监听使用的是在Adapter中给Item的view添加事件 添加接口来实现

 也可以通过的

recyclerView.addOnItemTouchListener(new OnRecyclerItemClickListener(recyclerView) {

            @Override

            public void onLongClick(RecyclerView.ViewHolder vh) {

                //长按事件

            }

            @Override

            public void onItemClick(RecyclerView.ViewHolder vh) {

                //但是事件

            }

        });

主要事件处理通过来实现具体如下OnRecyclerItemClickListene

public class OnRecyclerItemClickListener implements RecyclerView.OnItemTouchListener{

    private GestureDetectorCompat mGestureDetector;

    private RecyclerView recyclerView;


    public OnRecyclerItemClickListener(RecyclerView recyclerView){

        this.recyclerView = recyclerView;

        mGestureDetector = new GestureDetectorCompat(recyclerView.getContext(),new ItemTouchHelperGestureListener());

    }


    @Override

    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {

        mGestureDetector.onTouchEvent(e);

        return false;

    }


    @Override

    public void onTouchEvent(RecyclerView rv, MotionEvent e) {

        mGestureDetector.onTouchEvent(e);

    }


    @Override

    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {


    }


    private class ItemTouchHelperGestureListener extends GestureDetector.SimpleOnGestureListener {


        @Override

        public boolean onSingleTapUp(MotionEvent e) {

            View child = recyclerView.findChildViewUnder(e.getX(), e.getY());

            if (child!=null) {

                RecyclerView.ViewHolder vh = recyclerView.getChildViewHolder(child);

                onItemClick(vh);

            }

            return true;

        }


        @Override

        public void onLongPress(MotionEvent e) {

            View child = recyclerView.findChildViewUnder(e.getX(), e.getY());

            if (child!=null) {

                RecyclerView.ViewHolder vh = recyclerView.getChildViewHolder(child);

                onLongClick(vh);

            }

        }

    }


    public void onLongClick(RecyclerView.ViewHolder vh){}

    public void onItemClick(RecyclerView.ViewHolder vh){}

}

你可能感兴趣的:(RecyclerView 条目添加的单机和长按事件 - addOnItemTouchListener)