package cn.fanfan.widget;
import cn.fanfan.main.R;
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.AbsListView.OnScrollListener;
import android.widget.ListView;
public class LoadMoreList extends ListView implements OnScrollListener {
private View footer; // �ײ����ظ�����ͼ
private int mTotalItemCount;// ��������
private int mLastVisibleItem;// ���һ���ɼ���item��
private int mVisibleItemCount;// �ɼ�item������
private boolean mIsLoading;// ���ڼ��أ�
private OnLoadMoreListener mLoadMoreListener;// ���ظ���ص��ӿ�
public LoadMoreList(Context context) {
super(context);
// TODO Auto-generated constructor stub
initView(context);
}
public LoadMoreList(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
initView(context);
}
public LoadMoreList(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
// TODO Auto-generated constructor stub
initView(context);
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
this.mLastVisibleItem = firstVisibleItem + visibleItemCount;
this.mTotalItemCount = totalItemCount;
this.mVisibleItemCount = visibleItemCount;
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
Log.d("LoadMoreList onScrollStateChanged:", "mTotalItemCount:"
+ mTotalItemCount + ";" + "mLastVisibleItem:"
+ mLastVisibleItem + "mVisibleItemCount:" + mVisibleItemCount);
if (mTotalItemCount == mLastVisibleItem
&& scrollState == SCROLL_STATE_IDLE
&& (mVisibleItemCount != mTotalItemCount)) {
if (!mIsLoading) {
mIsLoading = true;
footer.findViewById(R.id.ll_loadlist_footer).setVisibility(
View.VISIBLE);
// ���ظ���
mLoadMoreListener.onLoad();
}
}
}
/**
* ��ӵײ�������ʾ���ֵ�listview
*
* @param context
*/
private void initView(Context context) {
LayoutInflater inflater = LayoutInflater.from(context);
footer = inflater.inflate(R.layout.widget_loadlist_footer, null);
footer.findViewById(R.id.ll_loadlist_footer).setVisibility(View.GONE);
this.addFooterView(footer);
this.setOnScrollListener(this);
}
/**
* �������
*/
public void loadComplete() {
mIsLoading = false;
footer.findViewById(R.id.ll_loadlist_footer).setVisibility(View.GONE);
}
public Boolean isLoading() {
return mIsLoading;
}
// ���ü���
public void setOnLoadMoreListener(OnLoadMoreListener mLoadMoreListener) {
this.mLoadMoreListener = mLoadMoreListener;
}
// ���ظ������ݵĻص��ӿ�
public interface OnLoadMoreListener {
public void onLoad();
}
}