java - 为什么 onFling() 在 ListView 中不起作用?

标签 java android listview swipe onfling

我的应用
显示一个 ListView。当向右或向左滑动时,应加载第二天或前一天的 ListView

我的解决方案
我尝试使用 onFling() 方法来检测向左或向右滑动。如果我在 ListView 上方的 TextView 上滑动,效果很好。

我的问题
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;
}

最佳答案

这听起来像是 ViewPager 的理想用例,它用于在同一 fragment 的不同实例之间左右滑动。 ViewPager 会为您处理所有手势。

参见 this guidethis guide有关如何设置 ViewPager 的示例。

关于java - 为什么 onFling() 在 ListView 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52784266/

相关文章:

java - AsyncHttpClient 和超时

java - FastLoad1.csv 示例文件应该是什么样子?

android - Listview 仅在滚动后显示图像

java - 在接收到 Firebase 消息时在 RecyclerView Adapter 中添加列表项

android - 在 ListView 中突出显示一行

java - 在listview android中多次点击

java - 通过 JAVA API 将映射放入 ElasticSearch

java - POI API APACHE 导入到 netbeans

Android 使用 ArrayList 向多个联系人发送短信

android - Android 中的语音命令关键字监听器