package com.ithooks.android.xreap.view;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.AbsListView;
/**
* Author: ZhuWenWu
* Version V1.0
* Date: 14-11-22 16:41
* Description: 分页加载的自定义ListView
* Modification History:
* Date Author Version Description
* -----------------------------------------------------------------------------------
* 14-11-22 ZhuWenWu 1.0 1.0
* Why & What is modified:
*/
public class PageListView extends StatusListView implements AbsListView.OnScrollListener {
private OnLoadNextListener mLoadNextListener;
private boolean isLoadMoreEnable;
private PageListViewState mStatus;
public static enum PageListViewState {
Idle, TheEnd, Loading
}
public PageListView(Context context) {
this(context, null);
}
public PageListView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public PageListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setOnScrollListener(this);
}
public void setLoadMoreEnable(boolean isLoadMoreEnable) {
this.isLoadMoreEnable = isLoadMoreEnable;
}
@Override
public void onScrollStateChanged(AbsListView absListView, int scrollState) {
}
@Override
public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (mStatus == PageListViewState.Loading
|| mStatus == PageListViewState.TheEnd || !isLoadMoreEnable) {
return;
}
if (firstVisibleItem + visibleItemCount >= totalItemCount
&& totalItemCount != 0
&& totalItemCount != getHeaderViewsCount()
+ getFooterViewsCount() && mLoadNextListener != null) {
setState(PageListViewState.Loading);
mLoadNextListener.onLoadNext();
}
}
public void setState(PageListViewState status) {
mStatus = status;
}
public void setLoadNextListener(OnLoadNextListener listener) {
mLoadNextListener = listener;
}
public interface OnLoadNextListener {
public void onLoadNext();
}
}