首 先新 建 一個 ListViewTest 項 目, 並 讓 ADT 自 動幫 我 們創 建 好 活動 。 然後 修 改
activity_main.xml 中的程式碼,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" >
<ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" >
</ListView>
</LinearLayout>
在佈局中加入 ListView 控制元件還算非常簡單,先為 ListView 指定了一個 id,然後將寬度 和高度都設定為 match_parent,這樣 ListView 也就佔據了整個佈局的空間。
接下來修改 MainActivity 中的程式碼,如下所示:
public class MainActivity extends Activity {
private String[] data = { "Apple", "Banana", "Orange", "Watermelon", "Pear", "Grape", "Pineapple", "Strawberry", "Cherry", "Mango" };
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ArrayAdapter<String> adapter = new ArrayAdapter<String>(
MainActivity.this, android.R.layout.simple_list_item_1, data); ListView listView = (ListView) findViewById(R.id.list_view);
listView.setAdapter(adapter);
}
}
既然 ListView 是用於展示大量資料的,那我們就應該先將資料提供好。這些資料可以是 從網上下載的,也可以是從資料庫中讀取的,應該視具體的應用程式場景來決定。這裡我們 就簡單使用了一個 data 陣列來測試,裡面包含了很多水果的名稱。
不過,陣列中的資料是無法直接傳遞給 ListView 的,我們還需要藉助介面卡來完成。 Android 中提供了很多介面卡的實現類,其中我認為最好用的就是 ArrayAdapter。它可以通 過泛型來指定要適配的資料型別,然後在建構函式中把要適配的資料傳入即可。ArrayAdapter 有多個建構函式的過載,你應該根據實際情況選擇最合適的一種。這裡由於我們提供的資料 都是字串,因此將 ArrayAdapter 的泛型指定為 String,然後在 ArrayAdapter 的建構函式中 依次傳入當前上下文、ListView 子項佈局的 id ,以及要適配的資料。注意我們使用了 android.R.layout.simple_list_item_1 作為 ListView 子項佈局的 id,這是一個 Android 內建的布 局檔案,裡面只有一個 TextView,可用於簡單地顯示一段文字。這樣介面卡物件就構建好了。
最後,還需要呼叫 ListView 的 setAdapter()方法,將構建好的介面卡物件傳遞進去,這 樣 ListView 和資料之間的關聯就建立完成了。
現在執行一下程式,效果如圖 3.29 所示。
圖 3.29
可以通過滾動的方式來檢視螢幕外的資料。