참고 :이 특정 문제는 해결되었지만 심각한 후속 문제가 있습니다. 한 번보기 GestureDetector - Detect double click in GridView item's although returning false in onTouchEvent()GestureDetector가 GridView의 DoubleClick 제품을 감지합니다.
GridView
개 이미지의 개별 항목에 대해 더블 클릭을 감지하고 싶습니다. 따라서 getView()
어댑터의 각 항목 imageView
에 별도의 OnTouchListener
을 할당했습니다. gestureDetector
은 어댑터 클래스의 멤버 변수입니다.
private GestureDetectorCompat gestureDetector;
public ImageGridViewAdapter(Context c, ArrayList<UriWrapper> startUpImages) {
mContext = c;
uriManager = new UriManager(startUpImages);
gestureDetector = new GestureDetectorCompat(mContext, new SingleTapConfirm());
}
public View getView(final int position, View recycled, ViewGroup parent) {
ViewHolder holder;
if (recycled == null) {
..... find items by id
} else{
holder = (ViewHolder) recycled.getTag();
}
// Set listener to item image
holder.image.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// Always returns false, the gestureDetector does not detect anything
boolean ret = gestureDetector.onTouchEvent(event);
// At least the onTouch-callback gets called with the correct position
Log.e(TAG, "onTouch returned " + ret + " at position " + position);
return true;
}
});
// Use glide library to load images into the image views
Glide.with(mContext)....into(holder.image);
return recycled;
}
개인 클래스 SingleTapConfirm는 GestureDetector.SimpleOnGestureListener {
@Override
public boolean onSingleTapConfirmed(MotionEvent event) {
Log.e(TAG, "onSingleTapConfirmed"); // never called..
return true;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
Log.e(TAG, "onDoubleTap"); // never called..
return super.onDoubleTap(e);
}
}
OnTouchListener
의 작업과 정확한 위치와 전화를받을를 확장합니다. 그러나 내가하고있는 것에 상관없이 GestureDetector
의 메서드는 호출되지 않습니다. 이 코드의 문제점은 무엇입니까?
업데이트 : onTouch 콜백은 true를 반환해야합니다. 적어도 이제는 GestureDetector가 작동합니다. 그러나, 길게 클릭 선택 모드 및 내 GridView에 대한 전역 OnTouchListener가 있기 때문에 true를 반환하면 나머지 기능이 중단됩니다.
두 번째 업데이트 : 항목 별 OnTouchListener와 전역 OnTouchListener를 병합하면 제대로 작동하지 않습니다. (특정 항목에서만 인식되는 스 와이프 동작) ImageView를 확장하는 사용자 지정보기를 만들고 항목 별 OnTouchListener를 할당하여이 두 가지 문제를 해결할 수 있기를 바랍니다.
확인이 링크 : http://stackoverflow.com/questions/2217670/android-how-to-detect-double-tap 나는 그것을 변경 – prakash