在做ListView加载数据时如果数据量大的话会造成加载时间过长而卡屏,所以为了解决这个问题,查看了SDK,
在OnScrollListener中有两个方法
只要重写这两个方法就可以实现滚动加载,例如:
- class MyScrollListener implements OnScrollListener {
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem,
- int visibleItemCount, int totalItemCount) {
- /**
- * we want to load the next chunk of data before the user reach the end of the list.
- * 在列表打到末尾之前,我们要加载下一个数据块
- * firstVisibleItem 表示在当前屏幕显示的第一个listItem在整个listView里面的位置(下标从0开始)
- * visibleItemCount表示在现时屏幕可以见到的ListItem(部分显示的ListItem也算)总数
- * totalItemCount表示ListView的ListItem总数
- * listView.getLastVisiblePosition()表示在现时屏幕最后一个ListItem
- * (最后ListItem要完全显示出来才算)在整个ListView的位置(下标从0开始)
- */
- Log.d("load", ""+firstVisibleItem+"----"+visibleItemCount+"-----"+totalItemCount);
- if(firstVisibleItem + visibleItemCount < totalItemCount - 3){
- Log.d("load", "if------<>");
- return;
- }
- if(dataLoader.isLoading() == false){
- Log.d("load", "false------>");
- loadNext();
- }
- }
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- Log.d("load", "onScrollStateChanged");
- }
- }
scrollState
The current scroll state. One of SCROLL_STATE_IDLE, SCROLL_STATE_TOUCH_SCROLL orSCROLL_STATE_IDLE.
转载自:http://blog.csdn.net/imdxt1986/article/details/7045494
还可参考:http://blog.csdn.net/hellogv/article/details/6615487