package com.handsomezhou.listviewloadmore.view; import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.ListView; import com.handsomezhou.listviewloadmore.R; /* * http://www.imooc.com/note/136?sort=last * */ public class LoadListView extends ListView implements OnScrollListener { View footer;// �ײ����֣� int totalItemCount;// �������� int lastVisibleItem;// ���һ���ɼ���item�� boolean isLoading;// ���ڼ��أ� private OnLoad mOnLoad; // ���ظ������ݵĻص��ӿ� public interface OnLoad { public void onStartLoad(); } public LoadListView(Context context) { super(context); // TODO Auto-generated constructor stub initView(context); } public LoadListView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub initView(context); } public LoadListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub initView(context); } /** * ��ӵײ�������ʾ���ֵ�listview * * @param context */ private void initView(Context context) { LayoutInflater inflater = LayoutInflater.from(context); footer = inflater.inflate(R.layout.footer_layout, null); footer.findViewById(R.id.load_layout).setVisibility(View.GONE); this.addFooterView(footer); this.setOnScrollListener(this); } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // TODO Auto-generated method stub this.lastVisibleItem = firstVisibleItem + visibleItemCount; this.totalItemCount = totalItemCount; } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // TODO Auto-generated method stub if (totalItemCount == lastVisibleItem && scrollState == SCROLL_STATE_IDLE) { if (!isLoading) { isLoading = true; footer.findViewById(R.id.load_layout).setVisibility( View.VISIBLE); // ���ظ��� if (null != mOnLoad) { mOnLoad.onStartLoad(); } } } } /** * ������� */ public void loadComplete() { isLoading = false; footer.findViewById(R.id.load_layout).setVisibility( View.GONE); } public OnLoad getOnLoad() { return mOnLoad; } public void setOnLoad(OnLoad onLoad) { mOnLoad = onLoad; } }