Android学习笔记【03】【数据存储与数据展示】

1、数据库创建介绍

大量相似结构数据的存储

2、数据库创建

定义类继承自SqliteOpenHelper

3、数据库的两个方法

使用SQLite Expert Professional工具可以打开创建的数据库

SqliteDataBase操作数据

onCreate方法:当数据库第一次创建的时候调用,适合做表结构的初始化

onUpgrade方法:数据库版本更新的时候调用

4、拼接SQL语句增删改查

5、命令行工具

sqlite3可以打开数据库

chcp 936 改编码gbk

chcp 65001 utf-8

6、用增删改查API

缺点:不能多张表查询

优点:简单,有返回值

7、数据库事物

同时成功或者同时失败(银行转账)

 1 db.beginTransaction();//开启事物
 2 try{
 3     //执行SQL操作
 4     db.execSQL("update info set xxx where xxx ");
 5     
 6     //给当前事物设置一个成功的标记
 7     db.setTransactionSuccessful();
 8 }catch (Exception e){
 9     
10 }finally{
11     db.endTransaction();//关闭事物
12 }

8、ListView入门

[1]定义ListView在布局中
[2]定义ListView的数据适配器
[3]实现baseAdapter的getCount方法和getView方法

ListView显示数据量多Out of memory出错

1 //ListView显示数据量多Out of memory出错
2 if(convertView == null){
3 //创建新的view对象
4 tv = new TextView(MainActivity.this;
5 }else{
6 //复用历史缓存对象
7 tv = (TextView) convertView;
8 }

9、ListView显示数据原理

javaweb:

mvc=mode数据  view视图(jsp)  controler(servlet)

android:

m:mode数据(javabean)  view:ListView  c:adapter

10、ListView优化效率

ListView布局高度如果配置为wrap_content,系统会不停的适配校验高度

ListView布局高度配为match_parent以提高效率

不管是什么adapter 作用就是把数据展示到ListView

BaseAdapter用的最多,其次ArrayAdapter,自定义实现重写getView方法

11、ListView显示复杂的页面

线性布局 相对布局都继承自ViewGroup 可以有自己的子节点

通过打气筒 inflate 可以把布局文件转换成View对象

12、获取打气筒

把自定义的布局转换成View对象

 1 View view;
 2 if(convertView == null){
 3 //获取打气筒方法1
 4 view = View.inflate(getApplicationContext(),R.layout.item,null);
 5 //获取打气筒方法2
 6 view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item,null);
 7 //获取打气筒方法3
 8 LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
 9 view = inflater.inflate(R.layout.item,null);
10 else{
11     view = convertView;
12 }
13 }

13、ArrayAdapter使用(继承自BaseAdapter)

 1 String obj[] = {"","","",""};
 2 
 3 //获取ListView控件
 4 ListView lv = (ListView) findViewById(R.id.lv);
 5 
 6 //创建ArrayAdapter
 7 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.item,obj);
 8 
 9 //设置数据适配器
10 lv.setAdapter(adapter);

权重的概念 线性布局中使用
14、SimpleAdapter

1 //参数1:上下文;参数2:数据;参数3:布局;参数4:数据的键;参数5:布局的ID
2 SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(),data,R.layout.item,new String[]{"name","phone"},new int[]{R.id.tv_name,R.id.tv_phone});

15、把数据库里的数据展示到ListView

数据库取数据,然后封装到JavaBean中

posted on 2017-08-21 23:21  风云剑策  阅读(237)  评论(0编辑  收藏  举报

导航