热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

4.安卓基础——数据存储&ListView

数据存储(sdCard和sqlite数据库)1.Linuxabd命令行:查看手机文件夹的详细信息:ls-lLinux只有一个文件根目录Linux系统文件的类型是通过d文件夹-普通文件l软连接(
数据存储(sdCard和sqlite数据库)
1.Linux

abd命令行:查看手机文件夹的详细信息:ls -l
Linux只有一个文件根目录/
Linux系统文件的类型是通过d文件夹 -普通文件 l软连接(相当于win下的快捷方式) 来区分
Android的根目录系统规定是默认只读权限
2.Context提供方法:

Context定义:
获取应用程序私有目录方法:getFileDir()
获取应用程序缓存文件目录:getCacheDir() 3.清单文件设置锁定竖屏android:screenOrientation="portrait" 应用清除头部requestWindowFeature(Window.FEATURENOTITLE);
4.QQ登录:

思路分析:
- 获取账号、密码、记住密码的控件对象
- 对登录的控件对象进行方法的
5.Android命令行:

Android在4.2之前不支持多用户
chmod修改权限命令需要手机root命令比如:chmod 666 private.txt
cat 打开密码文件
printenv手机配置储存等信息
6.xml存储sharedpreferences shared_prefs文件夹内

getFileDir() files文件夹
getCacheDir() cache文件夹内
7.读sdcard在4.0操作系统以上需要权限才可以读

8.关于SDcard

SDcard存储路径:Environment.getExternalStorageDirectory()
SDcard状态:Environment.getExternalStorageState()
SDcard大小计算:

File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
// stat.getBlockSizeLong();高版本使用
// 获得sd卡中块的总个数
long totalBlocks = stat.getBlockCount();
long sdCardSize = blockSize * totalBlocks;
剩余空间大小计算:

long availableBlocks = stat.getAvailableBlocks();
long availSize = blockSize * availableBlocks / 1024 / 1024;
9.数据库:CRUD create read update delete

语法:

创建数据表,create table 表名 (列名 列数据类型,...)

create TABLE info (id integer primary key autoincrement, name varchar(20), pwd varchar(20))
增 insert into 表名 (要插入的列名,...) values (相应列的值,...)

insert into info (name,pwd) values ("lisi",'1234')
改 update 表名 set 要修改列=要修改的值,... where 修改的条件

update info set name='zhangfei', pwd="12344321" where id=1
删 delete from 表名 where 删除条件

delete from info where id=1 or pwd='1234'
delete from info
查 select 要查出列名,... from 表名 where 查询条件

--select * from info
--select name from info
select pwd,name from info where id=1
10、数据库存储

继承SQLiteOpenHelper类,指定数据库名
创建数据库帮助对象helper

BankDBOpenHelper helper = new BankDBOpenHelper(this);
获得数据对象

SQLiteDatabase db = helper.getReadableDatabase()
SQLiteDatabase db = helper.getWritableDatabase();
数据库的更新只有在版本号发生变化的时候才会调用

11、命令

BankDBDao 其中的 Dao: Data access Object
sqlite3+数据库名字
.help
.tables表名字
.schema显示每张表创建的语句
.select * from account
.exit
chcp查看命令行的编码
chcp 65001(utf-8编码的代号)--->再修改非点阵字体
12、增删改查语句(重点)

第一种(普通)
增:db.execSQL("sql语句");
删:db.execSQL("sql语句");
改:db.execSQL("sql语句");
查:db.rawQuery("sql语句",null);
cursor.moveToFirst()
cursor.moveToNext()
cursor.moveToLast()
cursor.getFloat(0)等方法获得相应的数据
第二种:(占位符)
增:db.execSQL("insert into account (name,money) values (?,?)",new Object[]{name,money});
删:db.execSQL("delete from account where name=?", new Object[]{name});
改:db.execSQL("update account set mOney=? where name=?", new Object[]{money,name});
查:Cursor cursor = db.rawQuery("select money from account where name=?", new String[]{name});
第三种(建议使用Google API)
增:
ContentValues values = new ContentValues();
values.put("name", name);
values.put("money", money);
long rowId = db.insert("account", null, values);有返回值,中间的参数为空列处理
删:
int delete = db.delete("account", "name=?", new String[]{name});
改:
ContentValues values = new ContentValues();
values.put("money", money);
db.update("account", values , "name=?", new String[]{name});
查:
Cursor cursor = db.query("account", new String[]{"money","id"}, "name=?", new String[]{name}, null, null, null);
13.ListView(创建MyAdapter适配器类,继承BaseAdapter,需要getCount(),getView())

特点:

ListView条目显示才会创建,看不见后就会被GC回收。
滚动的速度太快新申请的条目过多,来不及回收看不到的,可能就会出现OOM(内存溢出)
可以服用看不到的条目

if (cOnvertView== null) {
textView = new TextView(MainActivity.this);
} else {
textView = (TextView) convertView;
}
15.ListView中打气筒原理

在xml文件中设计item布局,用在java代码,需要转成view对象

view = View.inflate(MainActivity.this, R.layout.item, null);
从view对象相应xml布局文件中查找控件

TextView tvSid = (TextView) view.findViewById(R.id.tv_sid);
学生信息管理系统案例分析(较之前的例子逻辑有点复杂)
客户端:
UI设计:

定义EditText3个分别输入学号、姓名、电话
下面设置一个Button添加学生信息到数据库
最下面用ListView显示学生信息
客户端Activity:

a.获取关心的控件学号、姓名、电话、ListView
b.添加按钮的方法
判断EidtText里面的内容是否为空
不为空就添加数据到数据库
c.给ListView添加基本的适配器
重写里面的方法
适配器要获得学生的信息条数及getView方法(展示)
数据库端:
自定义一个数据库帮助类对象继承SQLiteOpenHelper
设置其数据库的名字等信息
创建数据库表等信息
StudentBean类的创建:
StudentDBDao的创建:
主要向数据库中插入数据创建insert方法
还要获取数据库中数据的条数
查询学生信息返回StudentBean对象


推荐阅读
author-avatar
在路上的老兵
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有