Solved! My solution is:
int pixelCount = height * shift * (isForward ? 1 : -1); // calculate approximately shift in pixels
smoothScrollBy(pixelCount, 2 * DURATION * shift);//this smooth scroll works!
postDelayed(new Runnable()
{
public void run()
{
smoothScrollBy(0, 0); // Stops the listview from overshooting.
smoothScrollToPosition(activeItem + 1);
}
},
DURATION * shift);
Maybe it's not the best solution, but it works!