标签:
Day03
下拉列表相关
一、自动补全组件:Autocompletetextview
自动补全组件 (AutoCompleteTextView) :几个字符开始匹配:默认2个字
<AutoCompleteTextView
android:id="@+id/auto"
android:completionThreshold="1"/>
二、适配器:装配车间;制作一个视图——小条。因此我们要给小条提供数据,适配器就会自动生成这个视图。
【Ctrl+鼠标左键:可以进入函数声明。】
适配器创建并使用步骤
注意:请先在新建的xml布局文件中,创建一个含有数据集的MVC组件,并将其xml布局绑定到对应的src包中的XXX.java文件中,或直接在已有的xml布局中添加MVC的组件(例如:AutoCompleteTextView)以下操作均在java文件中。
1.准备数据源
private String[] arr={"鲁菜","川菜","湘菜","粤菜"};
2.声明一个AutoCompleteTextView组件:
private AutoCompleteTextView mAuTx;
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);
三、给imageview设置数据源效果
1.声明要绑定的组件
private ImageButton mDrop;
2.初始化组件
mDrop=(ImageButton) findViewById(R.id.imageButton1);
3.对组件设置OnClickListener
mDrop.setOnClickListener(newOnClickListener() {
@Override
public voidonClick(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,
删除:return super.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"
注意:一个Item代表一个菜单项。
orderInCategory——排序从小到大,针对多个时。
菜单是否显示在Actionbar:showAsAction:never,ifRoom,always,withText(支持图标和文本),collapseActionView
自定义menu:
使用单一menu复制即可。
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.在MenuActivity中:添加:onOptionsItemSelected(MenuItemitem)
2. switch (key) {
case value:
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:"返回前一页"
Duration:Toast.LENGTH_SHORT 或 Toast.LENGTH_LONG
Toast.makeText(MenuActivity.this, "返回前一页", 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 String DBNAME="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. 添加代码:
privateDBHelper db;
private Context context;//代表activity
3. 创建构造方法(source->Generateconstructor using fields)
勾选:context,不要勾选db
4. 编写打开数据库的方法
//打开数据库的方法
public void openDB(){
db = new DBHelper(context);
db.getReadableDatabase();
}
5. 编写关闭数据库的方法
//关闭数据库
public void closeDB(){
if(db!=null){
db.close();
}
}
6. 数据库添加
//数据库添加
public void add(){
//打开数据库
openDB();
//操作数据库
//关闭数据库
closeDB();
}
7. 在MainActivity.java中创建dao对象
Dao dao=new Dao(MainActivity.this);
dao.add();
标签:
原文地址:http://blog.csdn.net/moweiyang0214/article/details/44087307