美文网首页
RecyclerView 条目添加的单机和长按事件 - addO

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

作者: Imbv | 来源:发表于2018-04-20 14:52 被阅读0次

     以前使用监听使用的是在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 条目添加的单机和长按事件 - addO

          本文链接:https://www.haomeiwen.com/subject/mvaakftx.html