Почему onFling () не работает в ListView? - PullRequest
0 голосов
/ 12 октября 2018

Мое приложение
показывает 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;
}

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Это решило мою проблему:

gestureListener = new View.OnTouchListener(){
        public boolean onTouch(View v, MotionEvent event){
            return gestureDetector.onTouchEvent(event);
        }
    };

lv.setOnTouchListener(gestureListener);
0 голосов
/ 13 октября 2018

Это звучит как идеальный вариант использования ViewPager, который предназначен для перемещения влево и вправо между различными экземплярами одного и того же фрагмента.ViewPager обрабатывает все жесты за вас.

См. это руководство и это руководство для примеров того, как настроить ViewPager.

...