有时候要加载的数据上千条时,页面加载数据就会很慢(数据加载也属于耗时操作)。因此就要考虑分页甚至分批显示。先介绍一些分页的理论知识。对于具体用在哪里,会在后续博客中更新。
分页信息

1,一共多少条数据

   select count(*) from blacktb;
性能低下
原因: sql解析器先查询数据字典,把*转成所有的列名和列的类型 然后把每行数据提取出来
最后统计多少行数据 select count(常量) from blacktb;
高性能的查询
不需要每行的记录,只需要行数

2,指定每页显示多少条

 需求制定每页行数 如: 20

3,计算出共多少页

  int pages = (int)Math.ceil(201 * 1.0 / 20); // 10.05

4,取每页的信息 3页的数据

  select * from blacktb limit 取多少条 offset 从哪条数据;
select * from blacktb limit 行的起始位置 , 多少条数据; 如:取第3页 PageNumber每页显示多少条数据
select * from blacktb limit (3 - 1)*PageNumber,PageNumber
一般数据在数据库中取到显示的。根据上述理论知识,下面给一些查询数据库的一些伪代码。在项目中使用分页的时候,直接套用即可:

/**
* @return 总数据个数
*/
public int getTotalRows() {
SQLiteDatabase database = blackDB.getReadableDatabase();
Cursor cursor = database.rawQuery("select count(1) from "
+ BlackTable.BLACKTABLE, null);
cursor.moveToNext();
// 总行数
int totalRows = cursor.getInt(0); cursor.close();// 关闭游标
return totalRows;
} /**
* @param currentPage
* 当前页的页码
* @param perPage
* 每页显示多少条数据
* @return 当前页的数据
*/
public List<BlackBean> getPageDatas(int currentPage, int perPage) {
List<BlackBean> datas = new ArrayList<BlackBean>();
SQLiteDatabase database = blackDB.getReadableDatabase();
// 获取blacktb的所有数据游标 (2 + 3) + ""
Cursor cursor = database.rawQuery("select " + BlackTable.PHONE + ","
+ BlackTable.MODE + " from " + BlackTable.BLACKTABLE
+ " limit ?,? ", new String[] {((currentPage - 1) * perPage) + "",perPage + ""}); while (cursor.moveToNext()) {
// 有数据,数据封装
BlackBean bean = new BlackBean(); // 封装黑名单号码
bean.setPhone(cursor.getString(0)); // 封装拦截模式
bean.setMode(cursor.getInt(1)); // 添加数据到集合中
datas.add(bean);
} cursor.close();// 关闭游标
database.close();// 关闭数据库 return datas; } /**
* @param perPage
* 指定每页显示多少条数据
* @return 总页数
*/
public int getTotalPages(int perPage) {
int totalRows = getTotalRows();
// 计算出多少页,采用ceil函数,返回不小于该数的最小整数 如 :6.1 返回7.0
int totalPages = (int) Math.ceil(totalRows * 1.0 / perPage);
return totalPages; }





Android初级教程对大量数据的做分页处理理论知识的更多相关文章

  1. Android初级教程理论知识(第三章测试&数据存储&界面展现)

    首先介绍单元测试,我在javaweb部分有详细介绍单元测试框架的一篇文章. 可以先看在javaweb中的单元测试详解篇http://blog.csdn.net/qq_32059827/article/ ...

  2. Android初级教程之内容提供者获取联系人信息

    内容提供折详细理论知识请参考之前的博文:http://blog.csdn.net/qq_32059827/article/details/51646513 这里新建了三个联系人信息,通过查看系统联系人 ...

  3. Android初级教程理论知识(第四章内容提供器)

    之前第三章理论知识写到过数据库.数据库是在程序内部自己访问自己.而内容提供器是访问别的程序数据的,即跨程序共享数据.对访问的数据也无非就是CRUD. 内容提供者 应用的数据库是不允许其他应用访问的 内 ...

  4. Android初级教程理论知识(第五章页面跳转和数据传递)

    总体概述: Android四大组件 Activity BroadCastReceiver Service ContentProvider 创建第二个activity 新创建的activity,必须在清 ...

  5. Android初级教程:RatingBar的使用

    记得淘宝里面买家给卖家评分的时候会有一个星星状的评分条,其实就是基于RatingBar做了自定义使用了.那么本篇文章就对RatingBar的使用做一个基本的认识. 接下来就是正题,那就是对于Ratin ...

  6. Android初级教程:Android中解析方式之pull解析

    在安卓中有很多种解析方式.按照大方向有xml解析和json解析.而,细致的分,xml和json解析各有自己的很多解析方式.今天这一篇主要介绍xml解析中的pull解析.对于xml的解析方式,我之前在j ...

  7. Android初级教程获取手机系统联系人信息

    在手机内部,对联系人信息存在对应的数据库.我们创建的而联系人信息都存在这张表中.如下是对数据库的截图,我已经对表和应该注意的地方做了红笔标注: 好了,现在可以根据数据库里面的数据来写代码了. 代码如下 ...

  8. Android初级教程理论知识(第九章多媒体编程)

    多媒体概念 文字.图片.音频.视频 计算机图片大小的计算 图片大小 = 图片的总像素 * 每个像素占用的大小 单色图:每个像素占用1/8个字节 16色图:每个像素占用1/2个字节 256色图:每个像素 ...

  9. Android初级教程:ViewPage使用详解

    转载本博客,请注明出处:http://blog.csdn.net/qq_32059827点击打开链接 ViewPage使用之一就是轮播广告,就以此为出发点,来详细解析一下ViewPage的使用和加载机 ...

随机推荐

  1. ●BZOJ 4278 [ONTAK2015]Tasowanie

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4278 题解: 把两个串连接起来,用一个大数连接(必须要用大数).倍增算法求出后缀排名.然后两 ...

  2. bzoj 4518: [Sdoi2016]征途

    Description Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计划用m天到达T地.除第m天外,每一天晚上Pine都必须在休息站过夜 ...

  3. day4 liaoxuefeng---函数

    一.调用函数: 调用abs函数:取绝对值函数, >>> abs(100) 100 >>> abs(-20) 20 >>> abs(12.34) 1 ...

  4. Linux配置服务器的一点总结

    一.Linux初始化服务 首先搞清楚四个概念: 进程:正在运行的程序,有自己独立的内存空间. 线程:是进程的下属单位,开销较进程小,没有自己独立的内存空间. 作业:由一系列进程组成,来完成某一项任务. ...

  5. 数据结构 栈&队列

    2-4 依次在初始为空的队列中插入元素a,b,c,d以后,紧接着做了两次删除操作,此时的队头元素是( ) 删除,移动头指针: 增加,移动尾指针: 删除a,b ,队头c 2-3 在一个链队列中,fron ...

  6. 最新版-MySQL8.0 安装 - 改密码 之坑

    1. 需求背景 最近需要在一台性能一般的电脑上使用数据库,所以决定安装MySQL数据库,以前安装都是使用WorkBench自动化安装,但安装过程太慢占用空间过大,于是下载zip压缩包.之所以选择选择M ...

  7. 算法二叉搜索树之AVL树

    最近学习了二叉搜索树中的AVL树,特在此写一篇博客小结. 1.引言 对于二叉搜索树而言,其插入查找删除等性能直接和树的高度有关,因此我们发明了平衡二叉搜索树.在计算机科学中,AVL树是最先发明的自平衡 ...

  8. EXISTS的使用详解

    .exists的使用场合: exists 用于只能用于子查询,可以替代in,若匹配到结果,则退出内部 查询,并将条件标志为true,传回全部结果资料,in 不管匹配到匹配不到都 全部匹配完毕,使用ex ...

  9. 转:window与linux互相拷贝文件

    window与linux互相拷贝文件   借助 PSCP 命令可以实现文件的互拷:     1.下载pscp.exe 文件 (我的资源文件中有)   2.如果想在所有目录可以执行,请更改环境变量. w ...

  10. Docker基本架构

    Docker 采用了 C/S架构,包括客户端和服务端. Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建.运行.分发容器). 客户端和服务端既可以运行在一个机器上,也可通 ...