package me.storm.ninegag.view;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.AbsListView;
import android.widget.ListView;
/**
* Created by storm on 14-4-14.
*/
public class PageListView extends ListView implements AbsListView.OnScrollListener {
private LoadingFooter mLoadingFooter;
private OnLoadNextListener mLoadNextListener;
public PageListView(Context context) {
super(context);
init();
}
public PageListView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public PageListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init() {
mLoadingFooter = new LoadingFooter(getContext());
addFooterView(mLoadingFooter.getView());
setOnScrollListener(this);
}
public void setLoadNextListener(OnLoadNextListener listener) {
mLoadNextListener = listener;
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (mLoadingFooter.getState() == LoadingFooter.State.Loading
|| mLoadingFooter.getState() == LoadingFooter.State.TheEnd) {
return;
}
if (firstVisibleItem + visibleItemCount >= totalItemCount
&& totalItemCount != 0
&& totalItemCount != getHeaderViewsCount()
+ getFooterViewsCount() && mLoadNextListener != null) {
mLoadingFooter.setState(LoadingFooter.State.Loading);
mLoadNextListener.onLoadNext();
}
}
public void setState(LoadingFooter.State status) {
mLoadingFooter.setState(status);
}
public void setState(LoadingFooter.State status, long delay) {
mLoadingFooter.setState(status, delay);
}
}