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之實體關系映射