一.操作数据库
1.另一种方式操作数据库
insert(), delete(), update(), query()
通过参数组装SQL语句, Android的API中有些方法适合使用这些方式查询
insert(String, String, ContentValues) 第二个参数是指定表中的一列, 目的为了在ContentValues中没有数据时能插入空记录
insert()方法和execSQL()方法不同, 如果用insert()插入, 可以获取插入的记录的id
2.事务控制
beginTransaction() 开启事务
endTransaction() 结束事务, 将最后一次成功标记之前的语句提交. 如果没有成功标记, 那么全部回滚.
setTransactionSuccessful(), 设置成功标记, 可以设置多个, 类似回滚点
二.ListView
1.Adapter
BaseAdapter, 通过自己定义类继承BaseAdapter, 实现getView()方法来完成item的构建. 可以自己编码, 也可以使用View.inflate()方法来通过xml文件创建
SimpleAdapter, 传入一个List<Map<String, Object>>, List中的每一个元素都是一个Map也就是一个item中的数据
SimpleCursorAdapter, 直接传入Cursor, 指定Cursor中的哪些列对应那些组件id
2.onItemClickLinstener
BaseAdapter, 使用getItemAtPosition()方法时获取的是自定义的getItem()方法返回的对象
SimpleAdapter, 使用getItemAtPosition()方法时获取的一个Map
SimpleCursorAdapter, 使用getItemAtPosition()方法时获取的一个Cursor, 这个Cursor已经被移动到点击的哪条记录
三.ContentProvider
1.为什么使用内容提供者
统一了数据的访问方式
将数据进行封装, 提高安全性, 可以不将敏感数据暴露出来
可以使用Observer实时监听数据变化
2.定义ContentProvider
Manifest.xml中的<application>节点下配置<provider>节点, 配置name属性指定类名(最前面要加"."), 配置authroties定义主机名.
定义类继承ContentProvider
重写CRUD方法
3.ContentObserver
在ContentProvider的CRUD方法中可以通知数据变化. 调用 getContext().getContentResolver().notifyChange(uri, null);
使用ContentResolver的registerContentObserver(Uri, boolean, ContentObserver)方法来监听指定Uri上的数据变化
第一个参数是监听的Uri
第二个参数是是否监听该Uri的下级目录变化
第三个参数就是自定义的ContentObserver对象
定义ContentObserver, 重写onChange()方法, 在其中定义数据变化之后的操作
1.另一种方式操作数据库
insert(), delete(), update(), query()
通过参数组装SQL语句, Android的API中有些方法适合使用这些方式查询
insert(String, String, ContentValues) 第二个参数是指定表中的一列, 目的为了在ContentValues中没有数据时能插入空记录
insert()方法和execSQL()方法不同, 如果用insert()插入, 可以获取插入的记录的id
2.事务控制
beginTransaction() 开启事务
endTransaction() 结束事务, 将最后一次成功标记之前的语句提交. 如果没有成功标记, 那么全部回滚.
setTransactionSuccessful(), 设置成功标记, 可以设置多个, 类似回滚点
二.ListView
1.Adapter
BaseAdapter, 通过自己定义类继承BaseAdapter, 实现getView()方法来完成item的构建. 可以自己编码, 也可以使用View.inflate()方法来通过xml文件创建
SimpleAdapter, 传入一个List<Map<String, Object>>, List中的每一个元素都是一个Map也就是一个item中的数据
SimpleCursorAdapter, 直接传入Cursor, 指定Cursor中的哪些列对应那些组件id
2.onItemClickLinstener
BaseAdapter, 使用getItemAtPosition()方法时获取的是自定义的getItem()方法返回的对象
SimpleAdapter, 使用getItemAtPosition()方法时获取的一个Map
SimpleCursorAdapter, 使用getItemAtPosition()方法时获取的一个Cursor, 这个Cursor已经被移动到点击的哪条记录
三.ContentProvider
1.为什么使用内容提供者
统一了数据的访问方式
将数据进行封装, 提高安全性, 可以不将敏感数据暴露出来
可以使用Observer实时监听数据变化
2.定义ContentProvider
Manifest.xml中的<application>节点下配置<provider>节点, 配置name属性指定类名(最前面要加"."), 配置authroties定义主机名.
定义类继承ContentProvider
重写CRUD方法
3.ContentObserver
在ContentProvider的CRUD方法中可以通知数据变化. 调用 getContext().getContentResolver().notifyChange(uri, null);
使用ContentResolver的registerContentObserver(Uri, boolean, ContentObserver)方法来监听指定Uri上的数据变化
第一个参数是监听的Uri
第二个参数是是否监听该Uri的下级目录变化
第三个参数就是自定义的ContentObserver对象
定义ContentObserver, 重写onChange()方法, 在其中定义数据变化之后的操作