出在:http://blog.****.net/tu_bingbing/article/details/13275107
当ListView要显示的数据过多时,为了更快的响应用户,这个时候ListView进行分页显示再合适只是了。
ListView分页显示数据的原理事实上非常easy,当用户滑到ListView最后一项时,通知异步线程进行载入下一页的数据,下一页数据载入完毕时,调用设置好的Adapter的notifyDataSetChange()方法,ListView显示下一页的数据。
如今有两个问题要解决,第一个问题要知道用户是否滑到了ListView的最后一项;第二个问题是怎样提示用户正在载入下一页的数据,让用户耐心等待。
解决第一个问题,我们仅仅需自己定义ListView,让它实现OnScrollListener类监听ListView的滑动状态,以此来推断是否滑动到了最后一项
[java] view
plaincopy
plaincopy
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem,
- int visibleItemCount, int totalItemCount ) {
- if (getAdapter() == null){
- return ;
- }
- if (getAdapter().getCount() == 0){
- return ;
- }
- int lastItemIndex = firstVisibleItem + visibleItemCount;
- if (lastItemIndex >= totalItemCount){
- // 用户已经滑动到了ListView的最后一项
- }
要解决第二个问题也是在onScroll()方法中来实现
[java] view
plaincopy
plaincopy
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem,
- int visibleItemCount, int totalItemCount) {
- if (getAdapter() == null){
- return ;
- }
- if (getAdapter().getCount() == 0){
- return ;
- }
- int lastItemIndex = firstVisibleItem + visibleItemCount;
- if (lastItemIndex >= totalItemCount && ! isLoading){
- addFooterView( footerView );//用来提示用户正在载入下一页的数据
- isLoading = true ;
- listener.loadData();
- }
当监听到用户滑动到最后一项时,加入footerView,并通知进行数据载入。
以下是一个简单的样例源代码
很多其它0