public class NewsListView extends ListView {
// 下拉更多视图
private View lastMoreView;
//最后一个item postion
private int lastItem;
//listview item数目
private int itemSize;
//滑动到底部事件
private ScrollLastView sv;
//index
private int index;
public NewsListView(Context context, View lastMoreView, int index) {
super(context);
// TODO Auto-generated constructor stub
this.index = index;
this.lastMoreView = lastMoreView;
// 添加加载更多视图
this.addFooterView(this.lastMoreView);
// 隐藏尾部更多视图
this.lastMoreView.setVisibility(View.GONE);
this.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
itemSize = NewsListView.this.getAdapter().getCount() - 1;
//System.out.println("itemSize:" + itemSize + " lastItem:" + lastItem);
// 下拉到底部时,且最后一个item的数等于数据的总数时,进行更新
if (lastItem == itemSize && scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
//下拉到尾部操作代码
sv.scrollMethod();
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
lastItem = firstVisibleItem + visibleItemCount - 1;
}
});
}
public void setScrollMethod(ScrollLastView sv) {
this.sv = sv;
}
public interface ScrollLastView {
public void scrollMethod();
}
public View getLastMoreView() {
return this.lastMoreView;
}
public int getIndex() {
return index;
}
}
调用,直接set下拉到底部的接口事件就可以,在里面加入加载下一页的代码
listview.setScrollMethod(new ScrollLastView() {
@Override
public void scrollMethod() {
});