Android初级教程对大量数据的做分页处理理论知识
有时候要加载的数据上千条时,页面加载数据就会很慢(数据加载也属于耗时操作)。因此就要考虑分页甚至分批显示。先介绍一些分页的理论知识。对于具体用在哪里,会在后续博客中更新。
分页信息
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初级教程对大量数据的做分页处理理论知识的更多相关文章
- Android初级教程理论知识(第三章测试&数据存储&界面展现)
首先介绍单元测试,我在javaweb部分有详细介绍单元测试框架的一篇文章. 可以先看在javaweb中的单元测试详解篇http://blog.csdn.net/qq_32059827/article/ ...
- Android初级教程之内容提供者获取联系人信息
内容提供折详细理论知识请参考之前的博文:http://blog.csdn.net/qq_32059827/article/details/51646513 这里新建了三个联系人信息,通过查看系统联系人 ...
- Android初级教程理论知识(第四章内容提供器)
之前第三章理论知识写到过数据库.数据库是在程序内部自己访问自己.而内容提供器是访问别的程序数据的,即跨程序共享数据.对访问的数据也无非就是CRUD. 内容提供者 应用的数据库是不允许其他应用访问的 内 ...
- Android初级教程理论知识(第五章页面跳转和数据传递)
总体概述: Android四大组件 Activity BroadCastReceiver Service ContentProvider 创建第二个activity 新创建的activity,必须在清 ...
- Android初级教程:RatingBar的使用
记得淘宝里面买家给卖家评分的时候会有一个星星状的评分条,其实就是基于RatingBar做了自定义使用了.那么本篇文章就对RatingBar的使用做一个基本的认识. 接下来就是正题,那就是对于Ratin ...
- Android初级教程:Android中解析方式之pull解析
在安卓中有很多种解析方式.按照大方向有xml解析和json解析.而,细致的分,xml和json解析各有自己的很多解析方式.今天这一篇主要介绍xml解析中的pull解析.对于xml的解析方式,我之前在j ...
- Android初级教程获取手机系统联系人信息
在手机内部,对联系人信息存在对应的数据库.我们创建的而联系人信息都存在这张表中.如下是对数据库的截图,我已经对表和应该注意的地方做了红笔标注: 好了,现在可以根据数据库里面的数据来写代码了. 代码如下 ...
- Android初级教程理论知识(第九章多媒体编程)
多媒体概念 文字.图片.音频.视频 计算机图片大小的计算 图片大小 = 图片的总像素 * 每个像素占用的大小 单色图:每个像素占用1/8个字节 16色图:每个像素占用1/2个字节 256色图:每个像素 ...
- Android初级教程:ViewPage使用详解
转载本博客,请注明出处:http://blog.csdn.net/qq_32059827点击打开链接 ViewPage使用之一就是轮播广告,就以此为出发点,来详细解析一下ViewPage的使用和加载机 ...
随机推荐
- ●CodeForces 549F Yura and Developers
题链: http://codeforces.com/problemset/problem/549/F题解: 分治,链表. 考虑对于一个区间[L,R],其最大值在p位置, 那么答案的贡献就可以分为3部分 ...
- 网络基础-再议TCP
以前只是知道3次握手和4次挥手,但是对于其在连接和断开时的各个状态却不是很懂,今天就来看一下握手和挥手时的状态转换图: 1.三次握手和四次挥手时的状态转换图: 实线表示应用程序: 应用层首先发SYN的 ...
- ●BZOJ 2560 串珠子
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2560 题解: 容斥,状压计数dp 首先求出一个数组 g[s] 表示集合内的点的连边方案数(两 ...
- hdu 5120(2014北京—求圆相交)
题意:求环的相交面积 思路: 通过画图可知,面积= 大圆相交面积 - 大小圆相交面积*2 + 小小圆相交面积 再通过圆相交模板计算即可 #include <iostream> #incl ...
- hdu 4052 线段树扫描线、奇特处理
Adding New Machine Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- # C语言程序设计第一次作业1234
---恢复内容开始--- C语言程序设计第一次作业 1.求圆面积和周长 输入圆的半径,计算圆的周长和面积 (1)流程图 (2)测试数据及运行结果 测试数据r=3 运行结果 2.判断闰年 输入一个四位年 ...
- 通过接口标准化ABAP OO开发
本文是对接口编程的讨论,希望能对年轻的开发者有所帮助. 要点: 通过接口对类方法进行更高层的抽象 接口使代码清晰易读 接口使你可以创建模拟对象(Mockup Object)以提高代码的可测试性 帮助实 ...
- 【问底】徐汉彬:亿级Web系统搭建——单机到分布式集群
http://www.csdn.net/article/2014-11-06/2822529/3 大规模流量的网站架构,从来都是慢慢"成长"而来.而这个过程中,会遇到很多问题,在不 ...
- Java基础学习(1)——反射
反射就是把Java类中的各种成分映射成相应的Java类(主要用于框架开发) 反射的基石–>Class类 Java程序中的各个类属于同一事物,描述这类事务的Java类名就是Class. Class ...
- Jmeter_ForEach控制器实现网页爬虫
一直以来,爬虫似乎都是写代码去实现的,今天像大家介绍一下Jmeter如何实现一个网页爬虫! Jmeter的爬虫原理其实很简单,就是对网页提交一个请求,然后把返回的所有href提取出来,利用ForEac ...