Stop scrolling in a listview

后端 未结 6 2394
挽巷
挽巷 2021-02-15 16:32

I have in my activity a listview and an imagebutton. When I click the imagebutton I want to go to a specific position in the list (I do this by calling: setSelection(int positio

相关标签:
6条回答
  • 2021-02-15 17:11
    // Stop scrolling
    smoothScrollBy(0, 0);
    

    Internally this will call the method that @Nik is trying to reflect.

    0 讨论(0)
  • 2021-02-15 17:11

    You have a method for manual scrolling you can call listview.scrollTo(int, int); But I do not have idea how can you calculate how much to scroll, I mean how to calculate the arguments of the method. Also this doesn't stop scrolling it just positions you at a specific place and then stop scrolling, so you might have a little flicker... If doesn't solve you problem at list will give some hints.

    more about the method

    0 讨论(0)
  • 2021-02-15 17:12

    Use

    listView.smoothScrollBy(0, 0); // to stop the scrolling.
    // followed by
    listView.setSelection(position) // to move to the specific position.
    
    0 讨论(0)
  • 2021-02-15 17:12

    I would try calling ListView.smoothScrollToPosition(int position) to scroll back to the right position. As all the gui stuff is done in one thread I think there's little chance to really stop the scrolling on button press, so the easiest would be scrolling back (which might even be a nice gui effect too).

    0 讨论(0)
  • 2021-02-15 17:19

    I have write simple method to stop scoll ListView using reflection.

    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) {}
    }
    

    Just call stopScroll(myListView); when you need to stop scroll.

    0 讨论(0)
  • 2021-02-15 17:22

    did you try listView.clearAnimation() ? it might work

    0 讨论(0)
提交回复
热议问题