停止在列表视图中滚动

van*_*ram 8 android listview scroll

我的活动中有listview和imagebutton.当我单击图像按钮时,我想转到列表中的特定位置(我通过调用列表中的setSelection(int position)来执行此操作.当用户翻转列表视图然后单击图像按钮时会出现问题.列表变为到指定位置但继续滚动.

例如.当我进入fling模式,单击按钮,然后我转到第四个位置,但listview继续滚动,所以我最终选择了25

Nik*_*Nik 8

我已经编写了简单的方法来使用反射停止scoll ListView.

private void stopScroll(AbsListView view)
{
    try
    {
        Field field = android.widget.AbsListView.class.getDeclaredField("mFlingRunnable");
        field.setAccessible(true);
        Object flingRunnable = field.get(view);
        if (flingRunnable != null)
        {
            Method method = Class.forName("android.widget.AbsListView$FlingRunnable").getDeclaredMethod("endFling");
            method.setAccessible(true);
            method.invoke(flingRunnable);
        }
    }
    catch (Exception e) {}
}
Run Code Online (Sandbox Code Playgroud)

只需调用stopScroll(myListView); 当你需要停止滚动.


Bra*_*ell 7

// Stop scrolling
smoothScrollBy(0, 0);
Run Code Online (Sandbox Code Playgroud)

在内部,这将调用@Nik试图反映的方法.


Luk*_*kap 0

您有一个手动滚动的方法,可以调用 listview.scrollTo(int, int); 但我不知道如何计算滚动量,我的意思是如何计算方法的参数。此外,这不会停止滚动,它只是将您定位在特定位置,然后停止滚动,因此您可能会有点闪烁...如果列表中不能解决您的问题,则会给出一些提示。

有关该方法的更多信息