Мое приложение
показывает ListView
.При проведении вправо или влево ListView
для следующего или предыдущего дня должны быть загружены.
Мое решение
Я пытался использовать метод onFling()
для определения удара влево или вправо.Он отлично работает, если я проведу пальцем по TextView
над ListView
.
Моя проблема
Смахивание по ListView
не вызывает метод onFling()
.Вероятно, потому что мой ListView
прокручивается.Есть идеи, как это решить?
OnFling ()
private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 100;
GestureDetector gestureDetector;
@Override
public boolean onTouchEvent(MotionEvent event) {
gestureDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
boolean result = false;
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// right to left swipe
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Toast.makeText(this, "Right to Left swipe", Toast.LENGTH_SHORT).show();
result = true;
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
//left to right swipe
Toast.makeText(this, "Left to Right swipe", Toast.LENGTH_SHORT).show();
result = true;
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}