zoukankan      html  css  js  c++  java
  • 解决RecyclerView的onClickListener问题

    在MainActivity中添加:

            mRecyclerView.addOnItemTouchListener(
                    new RecyclerItemClickListener(context, mRecyclerView, new RecyclerItemClickListener.OnItemClickListener() {
                        @Override
                        public void onItemClick(View view, int position) {
                            // do whatever
                            mDrawerLayout.closeDrawers();
    
                        }
    
                        @Override
                        public void onItemLongClick(View view, int position) {
                            // do whatever
                            mDrawerLayout.closeDrawers();
    
                        }
                    })
            );

    添加Java文件:

    RecyclerItemClickListener.java

    package com.whisper.myapplication;
    
    import android.content.Context;
    import android.support.v7.widget.RecyclerView;
    import android.view.GestureDetector;
    import android.view.MotionEvent;
    import android.view.View;
    
    public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener
    {
        public static interface OnItemClickListener
        {
            public void onItemClick(View view, int position);
            public void onItemLongClick(View view, int position);
        }
    
        private OnItemClickListener mListener;
        private GestureDetector mGestureDetector;
    
        public RecyclerItemClickListener(Context context, final RecyclerView recyclerView, OnItemClickListener listener)
        {
            mListener = listener;
    
            mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener()
            {
                @Override
                public boolean onSingleTapUp(MotionEvent e)
                {
                    return true;
                }
    
                @Override
                public void onLongPress(MotionEvent e)
                {
                    View childView = recyclerView.findChildViewUnder(e.getX(), e.getY());
    
                    if(childView != null && mListener != null)
                    {
                        mListener.onItemLongClick(childView, recyclerView.getChildPosition(childView));
                    }
                }
            });
        }
    
        @Override
        public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e)
        {
            View childView = view.findChildViewUnder(e.getX(), e.getY());
    
            if(childView != null && mListener != null && mGestureDetector.onTouchEvent(e))
            {
                mListener.onItemClick(childView, view.getChildPosition(childView));
            }
    
            return false;
        }
    
        @Override
        public void onTouchEvent(RecyclerView view, MotionEvent motionEvent){}
    }

    参考文章:

    RecyclerView onClick

  • 相关阅读:
    Monolith and Microservice
    Lombok介绍、使用方法和总结
    Druid对应mysql-connector版本
    maven导入springboot项目
    区块链是什么?超级详细,看了无师自通!
    08.区块链的应用有什么?区块链将带来什么变革?
    06.工作量证明共识机制
    07 挖矿是什么意思?矿工都做了什么?
    05.比特币区块链的数据结构
    04.UTXO:未使用的交易输出,比特币核心概念之一
  • 原文地址:https://www.cnblogs.com/wkun/p/4378129.html
Copyright © 2011-2022 走看看