listview实现分页查询

2016-11-17  本文已影响0人  果冻都烂了

###分页查询

* 限制返回具体某些数据的sql语句如下:

> select * from stu limit PAGE_COUNT offset COUNT;

> PAGER_COUNT :代表的是每页返回多少, COUNT : 代表的是忽略掉前面的多少个条目。

> select * from stu limit 2 offset 5 ; //跳过前面的5条数据,返回2条数据

1. 定义查询方法

       String sql  = "select * from " + BlackListDB.TableBlackList.TABLE_NAME + " limit ? offset ?";

       Cursor cursor = db.rawQuery(sql, new String[]{limit+"" , offset+"" });

2. 初次查询,只查第一页的数据

       //现在只查询第一页。

       mList = mDao.query(PAGE_SIZE , 0);

3. 滑动到底部的时候,再去查询下一页的数据

> 此处要知道滑动到了底部,必须对ListView执行监听, 代码详见如下:

###ListView滑动监听

mListView.setOnScrollListener(this);

   //滑动状态变化

   @Override

   public void onScrollStateChanged(AbsListView view, int scrollState) {

       // 如果已经到了底部,并且现在是空闲状态(没有触摸,也不滑动。)

       //getLastVisiblePosition 得到当前屏幕里面的最底下哪一个条目的下标索引

       //后面的条件意思就是: 如果现在屏幕里面的最后哪一条就是整个集合的最后一条。

       if(scrollState== OnScrollListener.SCROLL_STATE_IDLE

               && mListView.getLastVisiblePosition() == mList.size() - 1){

           //查询回来新的一页数据

            /*List list = mDao.query(PAGE_SIZE , mList.size());

            //添加数据到集合中

            mList.addAll(list);

            mAdapter.notifyDataSetChanged();*/

            //------------------------------------

           List list = mDao.query(PAGE_SIZE , mAdapter.getCount());

           //已经查询到底了,没有再多的数据返回了。

           if(list.size() == 0 ){

               ToastUtil.showShort(this, "没有更多数据");

               return ;

           }

            //添加数据到集合中

            mAdapter.addData(list);

            mAdapter.notifyDataSetChanged();

       }

   }

   //只要有滑动,就调用

   @Override

   public void onScroll(AbsListView view, int firstVisibleItem,

           int visibleItemCount, int totalItemCount) {

   }

* ListView 数据为空,设置显示默认背景

  //设置数据为空显示的空view

                       mListView.setEmptyView(mIvEmpty);

上一篇下一篇

猜你喜欢

热点阅读