RecyclerView 长按事件解决
  mJ4yWAKdRNcf 2023年12月15日 12 0


interface RvOnItemTouchListener {

        void onLongTouchListener();
    }

public class OnLongTouchListener implements RecyclerView.OnItemTouchListener {

        RvOnItemTouchListener mRvOnItemTouchListener;
        private GestureDetector gestureDetector;

        public OnLongTouchListener(Context context, RvOnItemTouchListener rvOnItemTouchListener) {
            mRvOnItemTouchListener = rvOnItemTouchListener;
            gestureDetector = new GestureDetector(context, new MyGestureListener());
        }

        @Override
        public boolean onInterceptTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) {
            gestureDetector.onTouchEvent(e); // 手势识别
            return false; // 返回 false,确保触摸事件能够传递给 RecyclerView
        }

        @Override
        public void onTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) {
            // 在这里可以处理其他触摸事件的逻辑
            // 如果需要传递给 RecyclerView 进行处理,可以调用 recyclerView.onTouchEvent(e)
        }

        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
            // 空实现
        }

        private class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
            @Override
            public void onLongPress(MotionEvent e) {
                // 在长按事件中执行你的逻辑
                if (mRvOnItemTouchListener != null) {
                    mRvOnItemTouchListener.onLongTouchListener();
                }
                Log.i("调试信息", "onLongPress:  长按 ");
            }
        }
    }
mRecyclerView.addOnItemTouchListener(new OnLongTouchListener(this, new RvOnItemTouchListener() {
            @Override
            public void onLongTouchListener() {
                isLongPressed = true;
            }
        }));


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月15日 0

暂无评论

推荐阅读
mJ4yWAKdRNcf