Android平臺應用開發(fā)實例:Notepad
在這個教程中將會建立一個簡單列表界面,允許用戶添加刪除,但是不能編輯。包括如下的內容:
◆ListActivities的基礎知識和如何建立菜單項。
◆如何使用SQLite 數(shù)據(jù)庫訪問數(shù)據(jù)。
◆如何使用ArrayAdapter綁定數(shù)據(jù)到ListView (最簡單的一種方式)。
◆最基本的Layout,包括如何顯示一個ListView,如何向一個菜單插入菜單項以及如何響應菜單
第一步 建立工程
使用Eclipse建立一個工程Notepad
第二步 如何使用Sqlite數(shù)據(jù)庫
和系統(tǒng)相關的接口調用都要用到Context類。
1打開數(shù)據(jù)庫
代碼片段:
public DBHelper(Context ctx) { |
Context類的openDatabase可以打開一個已經(jīng)存在的數(shù)據(jù)庫,如果數(shù)據(jù)庫不存在,將會拋出FileNotFoundException異常??梢酝ㄟ^Context類的createDatabase函數(shù)建立一個新的數(shù)據(jù)庫。通過調用SQLiteDatabase 的execSQL方法,執(zhí)行一條SQL語句建立一個新的數(shù)據(jù)表。
2.獲取表中的數(shù)據(jù)
代碼如下:
public List﹤Row﹥ fetchAllRows() { |
建立一個游標類Cursor 通過SQLiteDatabase 的query方法查詢一個表格。有了Cursor就可以遍歷所有的記錄了。
3添加新的記錄
public void createRow(String title, String body) { |
構造一個ContentValues類,通過調用put方法,可以設置一條記錄的屬性。通過調用SQLiteDatabase的insert方法添加一條新的記錄。
4 刪除記錄
public void deleteRow(String str) |
直接調用SQLiteDatabase的delete方法,第二個參數(shù)是一個SQL條件表達式。
第三步 顯示方式和界面
大部分的界面都有一個Layout。我們的界面是顯示在整個屏幕中的List。還有其他的顯示方式,比如懸浮的窗口(Dialog,Alert)。
打開main.xml文件。
這是一個定義界面顯示風格的資源文件。
a. 所有的界面資源文件都從這樣的一行開始: ﹤?xml version="1.0" encoding="utf-8"?﹥.
b. 一般的類型定義都是LinearLayout (并不是總是)
c. 關于XML的名稱空間的定義,總是下面一行:
xmlns:android="http://schemas.android.com/apk/res/android" |
#p#
第四步 編輯notepad_list.xml文件
最終如下所示:
﹤?xml version="1.0" encoding="utf-8"?﹥ |
a. ListView和TextView只能顯示一個,正常情況下,ListView會被顯示出來,當沒有任何一個數(shù)據(jù)的時候將會顯示一個TextView ,顯示出 "還沒有建立任何數(shù)據(jù)!" ,字符串資源將被定義在資源文件中。
b. 在 ListView 和 TextView中的帶@符號的字符串表示,XML解析器將會分析出后面的數(shù)據(jù)是一個資源ID。
c. 通過更改資源文件,在R.java文件中的代碼會反應出來。在代碼中使用的資源都要通過R.java中的常量進行索引
第五步 定義一個顯示列表項風格的配置文件
在res/layout目錄現(xiàn)建立一個新的文件notes_row.xml.
添加如下的代碼:
﹤?xml version="1.0" encoding="utf-8"?﹥ ﹤TextView id="@+id/text1" |
第六步
把Notepad 的父類從 Activity 改為 ListActivity:
public class Notepad extends ListActivity |
注意: 必須導入ListActivity,在 Eclipse下可以使用, ctrl-shift-O
第七步
有三個方法: onCreate, onCreateOptionsMenu 和 onOptionsItemSelected, 需要我們填充:
onCreate()當一個界面開始顯示的時候會被調用,相當于一個界面的主函數(shù)。在這里可以初始化資源和狀態(tài)。
onCreateOptionsMenu() 被用來建立一個界面的菜單。當用戶點擊菜單鍵的時候將會顯示出來。
onOptionsItemSelected()當用選擇菜單的時候將會被調用。
第八步
填充onCreate() 方法。
在這里可以設置界面標題,初始化DBHelper對象管理數(shù)據(jù)。填充List列表。
a. 調用super()傳入?yún)?shù)icicle
b. setContentView to R.layout.notepad_list
c. 定義另外一個類dbHelper
d. 初始化DBHelper類。
e. 最后調用方法-fillData()-
f. onCreate()方法如下所示:
@Override |
添加私有的屬性DBHelper
private DBHelper dbHelper; |
第九步填充onCreateOptionsMenu() 方法.
在strings.xml文件中定義字符串資源。 a. 在strings.xml 文件中添加一個字符串資源
﹤string name="menu_insert"﹥添加﹤/string﹥,
﹤string name="menu_delete"﹥刪除﹤/string﹥,
這些在String.xml文件中定義的資源,保存文件后,在R.java中會出先相應的資源ID。
定義一個菜單ID 在NotePad.java 中。
public static final int INSERT_ID = Menu.FIRST; |
b. 在onCreateOptionsMenu() 中添加菜單項,返回父類法方法onCreateOptionsMenu的返回值.。代碼如下所示:
@Override |
其中num1是一個可以為菜單項排序的基數(shù),所有一樣基數(shù)的菜單項按照加入的順序排序,基數(shù)相同的菜單項排列在一起,基數(shù)按照從小到大的順序從上到下排列菜單項。Menuid是唯一一個菜單項的標識。當菜單項被用戶選擇的時候,這個標識就會在onOptionsItemSelected()方法的參數(shù)中出現(xiàn)。
第十步
填充onOptionsItemSelected() 方法:
當用戶選擇菜單以后,onOptionsItemSelected()方法將會被調用。通過調用item.getId()方法可以得到選擇的菜單的ID進而區(qū)別不同的菜單。 The super.onOptionsItemSelected(item) 返回父類的onOptionsItemSelected()方法;
@Override |
【編輯推薦】