###分頁查詢
* 限制返回具體某些數(shù)據(jù)的sql語句如下:
> select * from stu limit PAGE_COUNT offset COUNT;
> PAGER_COUNT :代表的是每頁返回多少, COUNT : 代表的是忽略掉前面的多少個條目。
> select * from stu limit 2 offset 5 ; //跳過前面的5條數(shù)據(jù),返回2條數(shù)據(jù)
1. 定義查詢方法
? ? ? ?String sql ?= "select * from " + BlackListDB.TableBlackList.TABLE_NAME + " limit ? offset ?";
? ? ? ?Cursor cursor = db.rawQuery(sql, new String[]{limit+"" , offset+"" });
2. 初次查詢,只查第一頁的數(shù)據(jù)
? ? ? ?//現(xiàn)在只查詢第一頁。
? ? ? ?mList = mDao.query(PAGE_SIZE , 0);
3. 滑動到底部的時候,再去查詢下一頁的數(shù)據(jù)
> 此處要知道滑動到了底部,必須對ListView執(zhí)行監(jiān)聽, 代碼詳見如下:
###ListView滑動監(jiān)聽
mListView.setOnScrollListener(this);
? ?//滑動狀態(tài)變化
? ?@Override
? ?public void onScrollStateChanged(AbsListView view, int scrollState) {
? ? ? ?// 如果已經(jīng)到了底部,并且現(xiàn)在是空閑狀態(tài)(沒有觸摸,也不滑動。)
? ? ? ?//getLastVisiblePosition 得到當(dāng)前屏幕里面的最底下哪一個條目的下標(biāo)索引
? ? ? ?//后面的條件意思就是: 如果現(xiàn)在屏幕里面的最后哪一條就是整個集合的最后一條。
? ? ? ?if(scrollState== OnScrollListener.SCROLL_STATE_IDLE
? ? ? ? ? ? ? ?&& mListView.getLastVisiblePosition() == mList.size() - 1){
? ? ? ? ? ?//查詢回來新的一頁數(shù)據(jù)
? ? ? ? ? ? /*List list = mDao.query(PAGE_SIZE , mList.size());
? ? ? ? ? ? //添加數(shù)據(jù)到集合中
? ? ? ? ? ? mList.addAll(list);
? ? ? ? ? ? mAdapter.notifyDataSetChanged();*/
? ? ? ? ? ? //------------------------------------
? ? ? ? ? ?List list = mDao.query(PAGE_SIZE , mAdapter.getCount());
? ? ? ? ? ?//已經(jīng)查詢到底了,沒有再多的數(shù)據(jù)返回了。
? ? ? ? ? ?if(list.size() == 0 ){
? ? ? ? ? ? ? ?ToastUtil.showShort(this, "沒有更多數(shù)據(jù)");
? ? ? ? ? ? ? ?return ;
? ? ? ? ? ?}
? ? ? ? ? ? //添加數(shù)據(jù)到集合中
? ? ? ? ? ? mAdapter.addData(list);
? ? ? ? ? ? mAdapter.notifyDataSetChanged();
? ? ? ?}
? ?}
? ?//只要有滑動,就調(diào)用
? ?@Override
? ?public void onScroll(AbsListView view, int firstVisibleItem,
? ? ? ? ? ?int visibleItemCount, int totalItemCount) {
? ?}
* ListView 數(shù)據(jù)為空,設(shè)置顯示默認(rèn)背景
? //設(shè)置數(shù)據(jù)為空顯示的空view
? ? ? ? ? ? ? ? ? ? ? ?mListView.setEmptyView(mIvEmpty);