1.把”滑动查看更多…”的view控件填充到布局中
mLoadMoreView = getLayoutInflater().inflate(
R.layout.activity_check_comment_load_more, null); // 填充底层view
mLoadMoreButton = (TextView) mLoadMoreView
.findViewById(R.id.load_more_button); // 加载更多数据的按钮
mListView.addFooterView(mLoadMoreView); // 设置listview列表最底部视图
"滑动查看更多..."的view的布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/load_more_button"
android:layout_width="fill_parent"
android:layout_height="@dimen/dp_30"
android:gravity="center"
android:textColor="@color/black"
android:text="@string/load_more_button"
android:background="@drawable/item_hotel_sort_condition_background_selector" />
</LinearLayout>
2.listview实现滚动监听事件
mListView.setOnScrollListener(new ScrollListener());
3.自定义ScrollListener类
/**
* listview的滚动监听器
*
* @author Administrator
*
*/
private final class ScrollListener implements OnScrollListener {
private int mItemsLastIndex;
private int mLastIndex;
private int mVisibleLastIndex;
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// mVisibleLastIndex实际就是可以见到的item总index值
mVisibleLastIndex = firstVisibleItem + visibleItemCount - ;
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
mItemsLastIndex = mAdapter.getCount() - ; // 数据集最后一项的索引
mLastIndex = mItemsLastIndex + ; // 加上底部的loadMoreView项
// 如果是自动加载,可以在这里放置异步加载数据的代码
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE
&& mVisibleLastIndex == mLastIndex) {
mLoadMoreButton.setText("正在加载中..."); // 设置按钮文字loading
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
requestMoreServerDatas(mRoomType, mCommentType,
mPageNumber);
}
}, );
}
}
}
4.requestMoreServerDatas()调这个方法得到数据后
// 得到数据mList为空,说明已经加载完。
if ("0".equals(Status) && mList == null) {
mListView.removeFooterView(mLoadMoreView);
T.show(CheckCommentActivity.this, R.string.load_complete_datas, );
return;
}
// 把mList数据遍历,添加到原来的集合里面
for (int i = ; i < mList.size(); i++) {
mCommentsDetailList.add(mList.get(i));
}
// 请求数据小于10条,说明数据加载完
if (mList.size() < ) {
T.show(CheckCommentActivity.this, R.string.load_complete_datas, );
mListView.removeFooterView(mLoadMoreView);
// mLoadMoreView.setVisibility(View.GONE);
} else { // 否则继续加载
mLoadMoreButton.setText("查看更多..."); // 恢复文字
// mAmount = mAmount - 10;
mPageNumber++;
}
5.如果是多种情况不停切换(比如:查看不同评论)
Android中ListView分页加载更多数据
这种情况要注意:切换前一定要先移除view,然后又添加view,避免一些特殊情况导致bug出现,并且页数重新赋值为。
mPageNumber = ;
mListView.removeFooterView(mLoadMoreView);
mListView.addFooterView(mLoadMoreView);