Android入門開發指南之Notepad 練習 android
在這個練習中,你將建立一個簡單的文本列表,讓用戶添加文本可是不能編輯它們,這個例子演示了:
ListActivities的基本用法,建立和處理菜單選項。
如何訪問和保存文本到SQLife數據庫中。
如何使用ArrayAdapter(最簡單的綁定ListView的方法)綁定相互聚到一個ListView。
基本的屏幕布局,包括如何佈局列表視圖,如何添加條目到實體菜單,屍體如何處理這些菜單的選種動做。
[Exercise 1] [Exercise 2] [Exercise 3] [Extra Credit]
第1步
在Eclipse中打開Notepadv1工程。
Notepadv1工程提供一個起點,它關心的事創建樣板文件的工做,若是你學習過Hell.Android tutorial例子,你對這些應該比較熟悉。操做步驟以下:
a.在包瀏覽器中右擊,選擇導入/通常/現有工程進入工做區。
b.點擊瀏覽按鈕,移動到你複製三個練習的文件夾,選擇Notepadv1文件夾,而後點擊OK。
c.你將看到Notepadv1列在工程列表中,而且後面帶有一個選擇框。
d.點擊結束。
e.這個練習工程將打開而且列出在Eclipse的包瀏覽器中。
f.若是你看到一個關於AndroidManifest.xml的錯誤,或者其它關於Android壓縮文件的錯誤,右擊工程從彈出菜單中選擇Android Tools-> Fix Project Properties (對庫文件而言,工程處在不正確的未知,這樣操做能夠修復它)。
第2步
訪問和修改數據
這個練習中,咱們將使用一個SQLite數據庫來直接保存咱們的數據,可是在實際的應用,使用一個合適的ContentProvider簡化這個行爲的方法更爲廣泛。
若是你感興趣,你能夠找到關於content providers的更多信息,或者你能夠參考關於存儲,得到和刷新數據的主題。
注意這個類DBHelper --- 這個類提供來壓縮數據到一個SQLite數據庫來保存咱們的文本數據而且容許咱們更新它。
典型狀況下你將使用ContrentProvider來執行,事實上,在SDK中的完整的Notepad應用就是執行的這樣一個ContentProvider。然而,沒有理由你不和咱們這裏同樣直接使用本身的SQLite數據庫。關鍵值得注意的問題是這個類爲咱們提供的存儲,獲取和更新SQLite數據庫中的數據的細節。許多方法又來獲取多行,根據行標識獲取一行,建立一個新的行,刪除一個存在的行和更新一行數據。若是你想獲取如何在咱們的應用中使用SQLite數據庫的指南,你能夠詳細閱讀這個類的文檔或者,更好的辦法就是,查看SDK中samples/目錄下的Notepad應用程序時如何使用ContentProvider的。
第3步
佈局和實體
許多實體都關聯一個佈局。佈局是實體面向用戶的臉面。在這個例子中,咱們的佈局將佈滿全屏而且提供一個文本列表。
全屏佈局不是實體惟一的選擇。你能夠參考一個浮動佈局(例如,一個對話框或者警告欄),或者某些狀況下你根本就不須要佈局(實體將對用戶隱藏直到你爲它指定某個佈局)。
打開res/layout目錄下的notepad_list.xml文件來查看:這是一個佈局定義文件,帶有一個默認的起點,咱們提供了註解方便你更快的掌握它:
a.全部的Android佈局文件都以XML行開頭<?xml version="1.0" encoding="utf-8"?>。
b.一樣下面的定義一般是一些佈局文件的定義,在這個例子中是LinearLayout。
c.注意在Android中的xml名字空間應當定義在最外層的佈局中,所以android:tags就能夠用在甚於的文件中。
xmlns:android=http://schemas.android.com/apk/res/android
第4步
咱們須要建立佈局來容納咱們的列表。調價代碼到LinearLayout標籤中,所以整個文件看起來就像是這個樣子的:(你可能須要順序點擊source tab頁來編輯這個xml文件) 數據庫
01 瀏覽器 |
<?xml version="1.0" encoding="utf-8"?> ide |
|
02 佈局 |
<LinearLayoutxmlns:android="http://schemas。android.com/apk/res/android" 學習 |
03 spa |
android:layout_width="wrap_content" xml |
|
04 ip |
android:layout_height="wrap_content"> utf-8 |
05 |
<ListView id="@id/android:list" |
|
06 |
android:layout_width="wrap_content" |
07 |
android:layout_height="wrap_content"/> |
|
08 |
<TextView id="@id/android:empty" |
09 |
android:layout_width="wrap_content" |
|
10 |
android:layout_height="wrap_content" |
11 |
android:text="@string/no_notes"/> |
|
12 |
</LinearLayout> |
a.ListView和TextView能夠做爲兩個可切換的視圖,每次只能顯示一個。ListView用來顯示文本列表,而TextView(是一個字符串資源,默認值爲」No Notes Yet!」,若是沒有文本是顯示這個字符串)。 b.ListView和TextView字符串中的@字符表示XML分析器將使用一個資源標識來分析和展開字符串中剩餘的部分。 c.android:list 和android:empty是Android平臺爲咱們提供的標籤,當列表適配器中沒有數據時,empty默認參數。列表適配器知道去搜索默認的特殊字。可選擇的作法是,你可使用列表適配器的setEmptyView()方法選擇改變默認的empty視圖。更普遍的是,android.R類是系統提供的一套預約義資源,而你的工程的R類是一套你本身定義的資源。Android.R資源類中存在的西元能夠XML文件中使用,方法是android:名字空間前綴(就像咱們看到的那樣)。