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

数据存储(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对象 

发布了45 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u010436867/article/details/54427701