Android 在 fragment 中滑动监听器

Android swipe listener in fragment

我正在按照本教程 http://www.brightec.co.uk/ideas/android-listview-alphabet-scroller 来实现一个字母表列表视图,该视图具有包含字母的侧视图,您可以滚动这些字母以使列表视图直接滚动到该字母。它与他们的示例配合得很好,但是我需要将这段代码放在一个片段中,并且滚动不再起作用。我不知道如何转换以下内容以便它在片段中工作:

private class SideIndexGestureListener extends GestureDetector.SimpleOnGestureListener {
    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
        Log.d("DEBUG", "SideIndexGestureListener.onScroll() distanceX=" + distanceX + " distanceY=" + distanceY);
        // we know already coordinates of first touch
        // we know as well a scroll distance
        sideIndexX = sideIndexX - distanceX;
        sideIndexY = sideIndexY - distanceY;

        // when the user scrolls within our side index
        // we can show for every position in it a proper
        // item in the country list
        if (sideIndexX >= 0 && sideIndexY >= 0) {
            displayListItem();
        }

        return super.onScroll(e1, e2, distanceX, distanceY);
    }
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (mGestureDetector.onTouchEvent(event)) {
        return true;
    } else {
        return false;
    }
}

我厌倦了以下操作:

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.activity_main_fragment_contacts, container, false);

    mGestureDetector = new GestureDetector(context, new SideIndexGestureListener());

    rootView.setOnTouchListener(new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            if (mGestureDetector.onTouchEvent(event)) {
                return true;
            } else {
                return false;
            }
        }
    });

    return rootView;
}

但它从未达到 onScroll 方法,所以我不知道我做错了什么?

好吧,我稍微修改了一下代码,并设法通过在我设置为 rootwiew 的侦听器的 onTouch 方法中始终返回 true 来使其工作。