(掌握)OOP增删改查
android考虑到很多的程序员可能对于sql语句不是很熟悉,所以就设计了一套面向对象的sql.使开发变的简单
oop 面相对象的sql
//对数据库进行操作 (crud)
public void add(View v){
SQLiteDatabase db = helper.getWritableDatabase();//获取一个可写的数据库
if(db.isOpen()){//判断数据库是否打开
//insert into person
ContentValues values = new ContentValues();//对于HashMap的一个封装
values.put("name", "陈洁仪");
db.insert("person", null, values);//最后系统会自己去拼接sql
}
db.close();//关闭数据库
}
public void update(View v){
SQLiteDatabase db = helper.getWritableDatabase();//获取一个可写的数据库
if(db.isOpen()){//判断数据库是否打开
ContentValues values = new ContentValues();
values.put("name", "韩红");
String whereClause = "_id = ?";
String[] whereArgs = new String[]{"3"};
db.update("person", values, whereClause, whereArgs);
}
db.close();
}
public void query(View v){
SQLiteDatabase db = helper.getReadableDatabase();
if(db.isOpen()){
//游标(结果集)
/**
* table 表, columns 查询列, selection 查询条件, selectionArgs 查询参数,
* groupBy 分组, having 分组条件, orderBy 排序
*/
Cursor cursor = db.query("person", new String[]{"*"}, null, null, null, null, null);
while(cursor.moveToNext()){
int _id = cursor.getInt(0);
String name = cursor.getString(cursor.getColumnIndex("name"));
Log.i(TAG, "_id:"+_id+",name:"+name);
}
cursor.close();//关闭游标
}
db.close();
}
public void delete(View v){
SQLiteDatabase db = helper.getWritableDatabase();//获取一个可写的数据库
if(db.isOpen()){//判断数据库是否打开
String whereClause = "_id = ?";
String[] whereArgs = new String[]{"3"};
db.delete("person", whereClause, whereArgs);
}
db.close();
}
(了解)数据库的事务
数据库的升级
1 修改数据库的版本号 SqliteOpenHelper工具类
2 重新运行应用程序,必须要调用SqliteOpenHelper.getXXXDatabase()
才会调用onUpgrade()方法
要给person表 添加一个新的字段 account:账户
更多的事务操作都是在服务器上执行。
例子:鸡哥找老张借钱
(掌握)Scrollview垂直滑动控件
ScrollView是一个可以垂直滑动的控件 在应用的详情页就使用了该控件
ScrollView只能有一个子节点
如果ScrollView要放置很多控件,就只能进行布局的包裹
动态给ScrollView添加内容
(掌握)listview的原理
该页面的内容每个条目不同 该页面每个条目的内容相同
ScrollView只能用于控件比较少的界面,如果数据有上千上万条,那么使用ScrollView就不好了,因为ScrollView就把所有的控件进行初始化,这是非常消耗性能的操作,所以android就设计了一个类ListView来专门处理列表数据条目的显示。
ListView会自动回收没有在屏幕上显示的控件,来优化性能。
ListView的使用场景:处理条目比较多,并且每个条目都非常相似的场景。
ListView:就是一个条目显示控件。
(掌握)listview和BaseAdapter的使用public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv = (ListView) findViewById(R.id.lv);
//给listView设置数据
lv.setAdapter(new BaseAdapter() {
//创建条目
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv = new TextView(getApplicationContext());//创建一个TextView
tv.setText("我是中国人,我喜欢日本人:"+position);
tv.setTextSize(25);
//隔行变色
if(position %2 == 0){
tv.setTextColor(Color.RED);
}else{
tv.setTextColor(Color.YELLOW);
}
return tv;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public Object getItem(int position) {
return null;
}
//条目的数量
@Override
public int getCount() {
return 30;
}
});
}
}
(掌握)布局填充器layoutinflater服务
布局加载器 布局填充器 打气筒
可以把res/layout下的布局资源加载到内存中
布局加载器:系统服务
查询person表里面的数据进行列表显示
资源找不到异常
如果你给TextView设置一个int类型的参数。他就会到资源里面进行查找。
(掌握)常用数据适配器
ArrayAdapter 数组适配器 用于简单的文字列表
SimpleAdapter 简单适配器 用于条目只有两个控件的列表
(掌握)对适配器的理解
(掌握)对话框
1 普通对话框
提醒用户 Toast 对话框Dialog
设计模式:构建器模式
例子:要建房子 瓦工:把所有的材料、钱 房子
所有:要创建对话框 就需要先构建:Builder对象
然后要数据给Builder,再通过Builder创建一个对话框,
最后显示对话框
连写
2列表对话框
3 单选对话框
4 多选对话框
5 不确定进度条对话框
6 水平进度条对话框
( 掌握)常见控件
1单选按钮:RadioButton
他必须放置在RadioGroup里面使用
2Spinner:下拉列表
3SeekBar:拖动条
4进度条:
Progress
不确定
水平
5自动完成提示框:
AutoCompleteTextView
6多次输入自动完成提示框
控件的常规操作
1 配置
2 findViewById
3 setXXX() setAdapter()
4 setOnXXXListener()
5getXXX()
(掌握)样式
样式:style
控制控件的显示
样式:css 层叠样式表 控制网页里面的控件
为什么要使用样式?
方便于代码的维护和升级