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
// Stop scrolling
smoothScrollBy(0, 0);
Internally this will call the method that @Nik is trying to reflect.
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
Use
listView.smoothScrollBy(0, 0); // to stop the scrolling.
// followed by
listView.setSelection(position) // to move to the specific position.
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).
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.
did you try listView.clearAnimation()
? it might work