@Scrollview的滑动到底部自动加载
public class ObservableScrollView extends ScrollView {
private boolean loadComplete = true;//是否加载完成
private boolean canLoadMore;//是否可以上拉加载
public ObservableScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if (onScrollChangedListener != null) {
onScrollChangedListener.onScrollChanged(t, oldt);
}
if (t + getMeasuredHeight() + 100 > getChildAt(0).getMeasuredHeight()) {//距离底部100px时候开始准备加载下一页
if (onLoadMoreListener != null && loadComplete && canLoadMore) {
loadComplete = false;
onLoadMoreListener.onLoadMore();
}
}
}
public interface OnScrollChangedListener {
void onScrollChanged(int scrollY, int oldY);
}
public void setLoadMoreComplete() {
loadComplete = true;
}
public void setCanLoadMore(boolean canLoadMore) {
this.canLoadMore = canLoadMore;
}
public interface OnLoadMoreListener {
void onLoadMore();
}
private OnScrollChangedListener onScrollChangedListener;
public void setOnScrollChangedListener(OnScrollChangedListener onScrollChangedListener) {
this.onScrollChangedListener = onScrollChangedListener;
}
private OnLoadMoreListener onLoadMoreListener;
public void setOnLoadMoreListener(OnLoadMoreListener onLoadMoreListener) {
this.onLoadMoreListener = onLoadMoreListener;
}
@Override
protected int computeScrollDeltaToGetChildRectOnScreen(Rect rect) {
return 0;
}
}