Android的分页加载和分批加载

分页加载


/**
* 上一页的按钮事件
*/
public void prePage(View view) {
    if (mCurrentPageNumber <= 0) {
    //已经到了第一页,添加自己的代码
    return;
    }
    //如果不是当前页,然后查询上一页的内容
    mCurrentPageNumber--;
     initData();
 }

/**
* 下一页
*
* @param view
*/
public void nextPage(View view) {
    //判断当前的页码不能大于总的页数
    if (mCurrentPageNumber >= (totalPage - 1)) {
      //已经到了最后一页,添加自己的代码
       return;
    }

    mCurrentPageNumber++;
    initData();
}
public void jump(View view) {//跳转到某一页,自己添加}

private void initData1(){
    //得到总的页数=总的条目/每一页显示的条目数
    totalPage = dao.getTotalNumber()/每一页显示的条目数;
    //初始化对象省略
    lists = new ArrayList<>();
    lists = dao.findPar(currentPage, PAGESIZE);
    tvPageNumber.setText(currentPage+1 + "/" + totalPage);
    adapter = new CallSafeAdapter(lists,CallSafeActivity.this);
    //设置listview的adapter,自己添加
    listView.setAdapter(adapter);
}
//分页加载的数据库代码
/**
* 分页加载数据
*
* @param currentPageNumber 表示当前是哪一页
* @param pageSize   表示每一页有多少条数据
*  limit 表示限制当前有多少数据
* offset 表示跳过 从第几条开始
*/
public List<BlackNumberInfo> findPar(int currentPageNumber, int pageSize) {
    SQLiteDatabase db = helper.getReadableDatabase();
    //limit表示从第pageNumber*pageSize开始往后查pageSize条
    String limit=currentPageNumber*pageSize+","+pageSize;
    Cursor cursor = db.query("blacknumber", new String[]{"number", "mode"}, null, null, null, null, null, limit);
//Cursor cursor = db.rawQuery("select number,mode from //blacknumber limit ? offset ?", new String[}{String.valueOf(pageSize),
//String.valueOf(pageSize * currentPageNumber)});
List<BlackNumberInfo> blackNumberInfos = new ArrayList<>();
while (cursor.moveToNext()) {
   BlackNumberInfo blackNumberInfo = new BlackNumberInfo();
   blackNumberInfo.setMode(cursor.getString(1));
   blackNumberInfo.setNumber(cursor.getString(0));
   blackNumberInfos.add(blackNumberInfo);
}
    cursor.close();
    db.close();
    // SystemClock.sleep(500);
    return blackNumberInfos;
}

分批加载


private void initUI() {
dao = new BlackNumberDao(CallSafeActivity2.this);
//得到总的个数
totalNumber = dao.getTotalNumber();
blackNumberInfos = new ArrayList<>();
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
/**
 *
 * @param view
 * @param scrollState  表示滚动的状态
 *
 *AbsListView.OnScrollListener.SCROLL_STATE_IDLE 闲置状态
 *AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL 手指触摸的时候的状态
 *AbsListView.OnScrollListener.SCROLL_STATE_FLING 惯性
 */
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
    if (scrollState == SCROLL_STATE_IDLE) {
        //先获取最底部显示的是哪一个item
        int lastVisiblePosition = listView.getLastVisiblePosition();
        if (lastVisiblePosition == blackNumberInfos.size() - 1) {
            //去过大于等于总条目,说明已经到底了
            startIndex += MAXCOUNT;
            if (startIndex >= totalNumber) {
                ToastUtils.showToast(CallSafeActivity2.this, "已经是最后一条了");
                return;
            }
            initData();
        }
    }
}

@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount){}
});
}

/**
* 初始化数据
*/
private void initData() {
//得到总的页数
//判断list集合是否为空,不为空就追加
if (blackNumberInfos == null)
    blackNumberInfos = dao.findPar2(startIndex, MAXCOUNT);
else
    blackNumberInfos.addAll(dao.findPar2(startIndex, MAXCOUNT));
System.out.println(blackNumberInfos.size());
//判断adapter是否为空,不为空就刷新
if (adapter==null) {
    adapter = new CallSafeAdapter(blackNumberInfos, CallSafeActivity2.this);
    listView.setAdapter(adapter);
} else {
    adapter.notifyDataSetChanged();
    listView.setSelection(startIndex);
}
}

/**
* 分批加载数据
*
* @param startIndex 开始的位置
* @param maxCount   每页展示的最大的条目
* @return
*/
public List<BlackNumberInfo> findPar2(int startIndex, int maxCount) {
 SQLiteDatabase db = helper.getReadableDatabase();
 String limit=startIndex+","+maxCount;
 Cursor cursor = db.query("blacknumber", new String[]{"number", "mode"}, null, null, null, null, null, limit);
//        Cursor cursor = db.rawQuery("select number,mode from blacknumber limit ? offset ?", new String[]{String.valueOf(maxCount),
//                String.valueOf(startIndex)});
 List<BlackNumberInfo> blackNumberInfos = new ArrayList<>();
 while (cursor.moveToNext()) {
     BlackNumberInfo blackNumberInfo = new BlackNumberInfo();
     blackNumberInfo.setMode(cursor.getString(1));
     blackNumberInfo.setNumber(cursor.getString(0));
     blackNumberInfos.add(blackNumberInfo);
 }
 cursor.close();
 db.close();
 return blackNumberInfos;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值