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;
}
}));