###分页查询
* 限制返回具体某些数据的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);
网友评论