Day03
下拉列表相干
1、自动补全组件:Autocompletetextview
自动补全组件 (AutoCompleteTextView) :几个字符开始匹配:默许2个字
<AutoCompleteTextView
android:id="@+id/auto"
android:completionThreshold="1"/>
2、适配器:装配车间;制作1个视图――小条。因此我们要给小条提供数据,适配器就会自动生成这个视图。
【Ctrl+鼠标左键:可以进入函数声明。】
适配器创建并使用步骤
注意:请先在新建的xml布局文件中,创建1个含有数据集的MVC组件,并将其xml布局绑定到对应的src包中的XXX.java文件中,或直接在已有的xml布局中添加MVC的组件(例如:AutoCompleteTextView)以下操作均在java文件中。
1.准备数据源
private String[]arr={"鲁菜","川菜","湘菜","粤菜"};
2.声明1个AutoCompleteTextView组件:
private AutoCompleteTextViewmAuTx;
3.初始化这个下拉菜单组件
mAuTx=(AutoCompleteTextView) findViewById(R.id.auto);
4.创建适配器
ArrayAdapter<String> adapter1=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arr);
注意:ArrayAdapter 泛型:只支持string
Context类:当前类(界面)本身XXXactivity.this,,没有内部类的情况下直接写this
Resource:布局――系统布局,让系统提供布局,android.r.layout. simple_list_item_1
Objects:数据源
5. 将下拉菜单组件 绑定 这个适配器
mAuTx.setAdapter(adapter1);
3、给imageview设置数据源效果
1.声明要绑定的组件
private ImageButton mDrop;
2.初始化组件
mDrop=(ImageButton) findViewById(R.id.imageButton1);
3.对组件设置OnClickListener
mDrop.setOnClickListener(newOnClickListener() {
@Override
publicvoidonClick(View arg0) {
mAuTx.showDropDown();//展现:数据源里的所有数据
}
});
日志工具的使用
怎样看错?
Log工具类的使用。
设置log节点
Log.v(TAG,”onCreate”);
调出logCat界面的方法:
Windows->showview->other->android->logCat
在logcat中
Info,warning,error,debug,verbose
Log-android.util.Log――工具包下
使用情势:Log.i(“tag1”,”消息是。。。。。”);
1.在logcat标签,左边savedfilters(设置过滤器),点击加号,认为设置过滤器。
Filter Name:aa
By Log Tag:tag1
点击ok
注意:Text标签就是捕捉信息的msg
All messages:默许显示本利用程序的所有log信息。
如何根据Logcat进行debug:
在logcat拉到最低端,找到最上面的毛病信息,查看text内容。
如何肯定毛病信息的类型:
1.FATAL exception:main――――主线程中出现类问题
2.RuntimeException:――运行时异常:组件信息出现异常
3.{MainActivity}――问题出新在这个activity中
4.ArithmaticException――算数异常
5.Thread.java:2059――先看包名:atcom.example.demo20150304.MainActivity.OnCreate(MainActivity.java:28)
nonepondException_空指针异常:
1. activity没注册
2. 组件没找到
SQLiteException
创建菜单:ActionBar
替换3.0之前的选项菜单Menu。
1.在XXXXXActivity中,找到OnCreateOptionMenu,若没有需要自己创建这个函数
2.在OnCreateOptionMenu,
删除:returnsuper.onCreateOptionsMenu(menu);
添加:
getMenuInflater().inflate(R.menu.main, menu);
returntrue;
注意:getMenuInflater菜单布局管理器――由activity提供。
3.在菜单寄存在res->menu文件夹下面,扎到main.xml
对Item标签添加:
android:showAsAction="always"
android:title="@string/action_settings"
注意:1个Item代表1个菜单项。
orderInCategory――排序从小到大,针对多个时。
菜单是不是显示在Actionbar:showAsAction:never,ifRoom,always,withText(支持图标和文本),collapseActionView
自定义menu:
使用单1menu复制便可。
1.创建menu:在res下的menu右击:new->xmlfile->起名字(不要大写)->finish
2.在menu中添加item标签,
android:id="@+id/asd"
android:showAsAction="always"
android:orderInCategory="100"
android:title="选项1"
3. onCreateOptionsMenu:getmenuinflater().
4. Return true;
菜单按钮单击事件
捕捉:触发事件。
1. 在所要触发事件对应的XXXActivity.java中添加:
onOptionsItemSelected(MenuItemitem)――函数方法
2.在onOptionsItemSelected方法中添加
switch (key) {
casevalue:
break;
default:
break;
}
3.修改key:item.getItemId()――Item项的Id
4.value:R.id.menu1
快显信息toast
Toast.makeText();
Toast.makeText(context,text, duration).show();
参数说明:
Context:MenuActivity.this
Text:"返回前1页"
Duration:Toast.LENGTH_SHORT 或 Toast.LENGTH_LONG
Toast.makeText(MenuActivity.this,"返回前1页", Toast.LENGTH_SHORT).show();
Android中的数据与文件存储
将数据存储到sdk,存储到利用程序目录,存到远端数据库(服务器)
本次讲授怎样存储到利用程序目录:――――(难!!!)
1. 流,xml文档。
2. 数据库情势。
SQLite数据库:
创建SQLite数据库,使用。
利用访问数据库的主要操作步骤:
1.创建或打开数据库
2.创建表
3.增删改查操作
4.关闭数据库
Android.database.sqlite,SQLiteOpenHelper的抽象类,不能创建对象。
因此创建类,继承这个类――这个类的作用:数据库创建,表的创建。
打开数据库:
getWritableDatabase――――可读写
getReadableDatabase――――只读
MVC模型
model:数据层:放数据相干的内容――――数据交换
control:链接model层和view层
view:根据不同model层提供的数据,进行界面的切换
1. 创建数据库帮助类:DBhelper.java
2. 继承extendsSQLiteOpenHelper(需要重写抽象类的抽象方法)
3. 添加AddConstructor:构造器
super(context, name, factory,version);
context:XXXactivity.this
name:数据库名字
factory:游标工厂(接口)
version:版本
本次我们只使用:context和name
A.创建私有变量:
privatefinalstatic StringDBNAME="food.db";
B.修改:
public DBHelper(Context context) {
super(context,DBNAME,null, 1);
}
4. 重写抽象方法
Addunimplemented methods
5. onCreate(SQLiteDatabase arg0)――创建表格的方法,参见需求说明
注意空格!!!!!注意逗号!!!!!!!!
String sqlStr="create table "+TABNAME+"(" +
"id integer primary key autoincrement," +
"name varchar(20),"+
"cuisine varchar(20),"+
"picPath varchar(80),"+
"material varchar(20),"+
"ingredient varchar(20),"+
"cookingStep varchar(20),"+
"audioPath varchar(80),"+
"videoPath varchar(80))";
db.execSQL(sqlStr);//做数据库版本更新
onUpgrade(SQLiteDatabasearg0, int arg1, int arg2)
6. 在mainActivity中添加代码:创建数据库类帮助对象
DBHelper db=new DBHelper(this);
7. 在mainActivity中:打开数据库
db.getWritableDatabase();
模块化代码:封装好的
导出db文件
DDMS->FIleExplorer->data->data->XXX.demo20150304->databases->food.db
d开头可以访问
l开头不可访问
利用Dao的方法
1. 在model包中创建Dao.java文件
2. 添加代码:
privateDBHelperdb;
private Contextcontext;//代表activity
3. 创建构造方法(source->Generateconstructor using fields)
勾选:context,不要勾选db
4. 编写打开数据库的方法
//打开数据库的方法
publicvoid openDB(){
db =new DBHelper(context);
db.getReadableDatabase();
}
5. 编写关闭数据库的方法
//关闭数据库
publicvoid closeDB(){
if(db!=null){
db.close();
}
}
6. 数据库添加
//数据库添加
public void add(){
//打开数据库
openDB();
//操作数据库
//关闭数据库
closeDB();
}
7. 在MainActivity.java中创建dao对象
Dao dao=new Dao(MainActivity.this);
dao.add();
上一篇 Hibernate之实体关系映射