01_自动更新的设置
-
动态的传递listener:(由于自定义view的属性被封装)
-
暴露一个方法去设置复选框的状态
-
通过暴露的方法设置自定义view的属性
如果不更新,直接进入
02_自动更新的业务优化
03_监听动画的事件
也可以把版本检测放在开始动画里面
04_黑名单的界面
05_自定义组件控件事件传递
容器是没有点击事件的,除非添加 clickable:true
想 设置中心 添加黑名单拦截模式组件,只需提供事件的方法即可
06_黑名单界面的处理
设置handler处理事件,通过message(简单界面)
07_黑名单数据创建
标记性常量的原则:每个标记只对应一个位为1
例子:
08_黑名单数据的业务封装
封装手法:
09_显示黑名单数据
// 给Listview设置适配器,就去取适配器的数据显示
mLv_safenumbers.setAdapter(mAdapter);
// 首先 调用adapter的getcount方法来获取多少条数据
// 1:如果为0,不显示任何数据 2:否则依次调用getView()获取每个数据并设置到组件上
10_分页数据dao处理
分页的思想:
-
一共有多少条数据
select count(*) from blacktb
原因:SQL解析器会先查询数据字典,把*转成所有的列名和列的类型
然后把每行数据提取出来,最后计算多少行
select count(常量) from blacktb(性能好,例子:1)
原因:不需要每行的记录,只需要行数
select 1 from blacktb(表示查询到所有)
-
指定每一页有多少条数据
需求指定每一页行数
-
计算出共多少页
int pages = 201 / 20; // 结果是20,不是21
int pages = (int)Math.ceil( 201*1.0 / 20 ); // ceil() --- 浮点数向上取整
-
取每页的信息
select * from blacktb limit 5 offset 3; // 取5条数据,从第3行开始
select * from blacktb limit 5 ,3; // 从第5行开始,去3条数据
如:去第三页的数据
select * from blacktb limit (3 - 1) * 20 ,20
select * from blacktb limit (页码 – 1 ) * 每页条数 ,每页条数 ;
11_分页显示黑名单数据
初始化:
更新界面的initData() 方法:
切换界面:
DAO:
// 获取blacktb的所有数据游标
Cursor cursor = db.rawQuery("select " + BlackTable.PHONE + "," + BlackTable.MODE + " from " + BlackTable.BLACKTB+" limit ?,?", new String[]{((currentPage -1)*perpages)+"",perpages+""});
更改界面:放在handler里面
12_分批加载数据
13_删除黑名单数据
在listview的getView中给每个item添加点击事件
注意删除一条增加一条
14_添加黑名单数据
15_添加黑名单数据2
避免重复数据:添加前先删除
1.DAO中删除
2.Activity中删除
2.1 改造bean类
16_添加黑名的弹出窗体
弹出窗体的位置设置: