在將此問題標記爲重複之前,請注意,我已經在Stackoverflow上查看了類似問題的所有解決方案,但它們都無效。如何在recyclerview中單擊項目時停止手勢檢測器在單擊時執行長按?
下面是我實現手勢檢測器的過程。您將在擴展GestureDetector.SimpleOnGestureListener的私有類中看到,我只創建了長按的代碼,但onLongPress中包含的代碼也會在一次點擊中觸發。
類實現OnItemTouchListsner 見下文
public class MyFragment extends Fragment implements RecyclerView.OnItemTouchListener
代碼創建私有變量見下文代碼
private GestureDetectorCompat gestureDetector;
我分配gestureDetector在onCreateView 見下文
代碼我實施OnItemTouchListener 所需的方法見下文
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
gestureDetector.onTouchEvent(e);
return false;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}
我創建了一個私有類手勢聽者代碼見下面的代碼
private class RecyclerViewOnGestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public void onLongPress(MotionEvent e) {
//code in here executes on single tap, but should only execute on long press
super.onLongPress(e);
}
}
謝謝你的幫助。我修好了:)這是一個很好的建議,但沒有解決問題。看到我的答案... – HaloMediaz 2015-03-31 21:23:38