package me.wcy.music.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AbsListView;
import android.widget.ListView;
import me.wcy.music.R;
/**
* 自动加载更多ListView
* Created by hzwangchenyan on 2016/1/7.
*/
public class AutoLoadListView extends ListView implements AbsListView.OnScrollListener {
private static final String TAG = AutoLoadListView.class.getSimpleName();
private View vFooter;
private OnLoadListener mListener;
private int mFirstVisibleItem = 0;
private boolean mEnableLoad = true;
private boolean mIsLoading = false;
public AutoLoadListView(Context context) {
super(context);
init();
}
public AutoLoadListView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public AutoLoadListView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
vFooter = LayoutInflater.from(getContext()).inflate(R.layout.auto_load_list_view_footer, null);
addFooterView(vFooter, null, false);
setOnScrollListener(this);
onLoadComplete();
}
public void setOnLoadListener(OnLoadListener listener) {
mListener = listener;
}
public void onLoadComplete() {
Log.d(TAG, "onLoadComplete");
mIsLoading = false;
removeFooterView(vFooter);
}
public void setEnable(boolean enable) {
mEnableLoad = enable;
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
boolean isPullDown = firstVisibleItem > mFirstVisibleItem;
if (mEnableLoad && !mIsLoading && isPullDown) {
int lastVisibleItem = firstVisibleItem + visibleItemCount;
if (lastVisibleItem >= totalItemCount - 1) {
onLoad();
}
}
mFirstVisibleItem = firstVisibleItem;
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
private void onLoad() {
Log.d(TAG, "onLoad");
mIsLoading = true;
addFooterView(vFooter, null, false);
if (mListener != null) {
mListener.onLoad();
}
}
public interface OnLoadListener {
void onLoad();
}
}