I have a ListView, first its scrolled down, now when we scroll up,it reach top most point. I want to detect that .Is there any way?I am developing application with api level
I know this question is old, but it shows up top in Google search results. There is a new method introduced in API level 14 that gives exactly what we needed:
http://developer.android.com/reference/android/view/View.html#canScrollVertically%28int%29
For older platforms one can use similar static methods of See edit below.ViewCompat in the v4 support library.
Unlike Graeme's method, this method is immune of problems caused by the internal view reuse of ListView and/or header offset.
Edit: final solution
I've found a method in the source code of SwipeRefreshLayout that handles this. It can be rewritten as:
public boolean canScrollUp(View view) {
if (android.os.Build.VERSION.SDK_INT < 14) {
if (view instanceof AbsListView) {
final AbsListView absListView = (AbsListView) view;
return absListView.getChildCount() > 0
&& (absListView.getFirstVisiblePosition() > 0 || absListView
.getChildAt(0).getTop() < absListView.getPaddingTop());
} else {
return view.getScrollY() > 0;
}
} else {
return ViewCompat.canScrollVertically(view, -1);
}
}
You may need to add custom logic if the passed-in view is a custom view.