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

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. BZOJ2989 数列(二进制分组)

    这题其实可以cdq分治做,但是如果强制在线的话,这里有个牛逼方法叫二进制分组. 它的基本思想是把修改操作按二进制分组,遇到修改就在尾部加一个,并与之前的合并,比如之前有23(16+4+2+1)个,加了 ...

  2. linux 下文件误删恢复

    linux 下文件误删恢复 0x01 事件背景 某天晚上写代码的时候,本来想删除当前目录下一个叫xxx的文件夹 rm -rdf ./xxx/*, 结果光顾着和人说话,一不留神手贱把命令敲成了rm -r ...

  3. Python与C的简单比较(Python3.0)

    Python可以说是目前最火的语言之一了,人工智能的兴起让Python一夜之间变得家喻户晓,Python号称目前最最简单易学的语言,现在有不少高校开始将Python作为大一新生的入门语言.本萌新也刚开 ...

  4. input中v-model和value不能同时调用时解决方案

    <input type="text" v-model="keyWord" value="请输入地名地址" > 当使用如上代码时, ...

  5. jquery easyui datagrid设置行样式 不可删除某行

    rowStyler: function (index,row) { if (parseInt(row.ksrs) > 0) { return 'color:red'; } }, onLoadSu ...

  6. application-config.xml和mvc-config.xml的区别

    头一个放bean之类的东西 后一个放controllers, view resolvers之类的东西

  7. 小程序敏感信息解密-java

    /** * AES解密 * @param content 密文 * @return * @throws InvalidAlgorithmParameterException * @throws NoS ...

  8. java客户端Jedis操作Redis Sentinel 连接池

    pom配置: <dependency> <groupId>org.springframework.data</groupId> <artifactId> ...

  9. java 需要准备的知识(转摘)

    需要准备的知识 以下为在近期面试中比较有印象的问题,也就不分公司了,因为没什么意义,大致分类记录一下,目前只想起这么多,不过一定要知道这些问题只是冰山一角,就算都会了也不能怎么样,最最重要的,还是坚实 ...

  10. python OptParse模块的用法详解

    OptParse模块的简单介绍 Python 有两个内建的模块用于处理命令行参数: 一个是 getopt只能简单处理 命令行参数: 另一个是 optparse,它功能强大,而且易于使用,可以方便地生成 ...