zoukankan      html  css  js  c++  java
  • 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中

  • 相关阅读:
    黑客悬赏活动第二期 | 百万ELF赏金,aelf跨链转账标准协议CCTP等你挑战!
    2020年aelf首场全民公测,有奖狂欢四重好礼大放送!
    使用aelf最新稳定测试币AEUSD试玩BingoGame Demo,赢取体验奖金!
    开发者大赛 | aelf轻型DApp开发训练大赛结果公布!
    黑客赏金第一期 | aelf跨链转账标准协议准备就绪,88888ELF赏金等你挑战!
    Twitter AMA预告 | aelf 创始人马昊伯将以【aelf治理与发展】为主题进行在线答疑!
    aelf Enterprise 1.0.0 Preview 2 版正式发布!
    aelf技术点解读 | 分红合约接口实现方案
    深入浅出索引--Mysql45讲笔记记录 打卡day3
    一条SQL语句是如何执行的?--Mysql45讲笔记记录 打卡day1
  • 原文地址:https://www.cnblogs.com/leishoulin/p/7407254.html
Copyright © 2011-2022 走看看