I have a problem with android version 2.1. It looks like a bug.
I attached an OnScrollListener
to my listView.
I\'m using the method onScrollS
I found something of a workaround for this (at least for API level 9+, where I'm still seeing the bug). I'm using a GridView, but I believe this should also work for ListView.
I'm using a subclass of GridView where I am detecting the overscroll (top or bottom):
public class CustomGridView {
private boolean mIsOverScrolled = false;
@Override
protected void onOverScrolled(int scrollX, int scrollY,
boolean clampedX, boolean clampedY) {
mIsOverScrolled = true;
super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
}
public boolean isOverScrolled() {
return mOsOverScrolled;
}
public void clearOverScroll() {
mIsOverScrolled = false;
}
}
Then, in my OnScrollListener of CustomGridView, I have:
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
int totalItemCount) {
if (gridView.isOverScrolled()) {
gridView.clearOverScroll();
}
// ...
}
Now when I'm checking for OnScrollListener.SCROLL_STATE_IDLE
, I also check if !gridView.isOverScrolled()
. I'm not sure if that fixes your specific use cases, but hopefully you can use the additional piece of info to determine your current state despite the bug.
I got a similar issue on 2.2.
If the list is big enough, and I scroll down up, I got first CROLL_STATE_TOUCH_SCROLL while my finger is on the screen. When my finger leave the screen I got the SCROLL_STATE_FLING. When my view has stopped moving I got the SCROLL_STATE_IDLE.
But, if during scroll, it reaches either View Top or Bottom, I only scroll/fling values and never the idle.
I checked out Shelves project from Romain Guy and his implementation suffer the same issue on 2.2.x I'm wondering if he had noticed yet.
I haven't tried yet with 2.3.x
I think there is a bug that has been registered for this case.
http://code.google.com/p/android/issues/detail?id=5086
I have had this same problem and posted a workaround on the bug list mentioned by DeRagan: Link