package org.azavea.views; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.ScrollView; public class NotifyingScrollView extends ScrollView { private OnScrollToBottomListener bottomListener = null; public interface OnScrollToBottomListener { void OnScrollToBottom(); } public NotifyingScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public void setOnScrollToBottomListener(OnScrollToBottomListener listener) { bottomListener = listener; } public void onScrollToBottom() { } @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { // Grab the last child placed in the ScrollView, we need it to determinate the bottom position. View view = getChildAt(getChildCount() - 1); // Calculate the scrolldiff int diff = (view.getBottom() - (getHeight() + getScrollY())); if (diff == 0) { if (bottomListener != null) { bottomListener.OnScrollToBottom(); } } super.onScrollChanged(l, t, oldl, oldt); this.onScrollToBottom(); } }