Photo by Markus Winkler on Unsplash
[ListView]
ListView 也是 Android 中很常見的一種列表元件,它以列表清單的方式將資料顯示在螢幕上。在 Android 中,如果想在螢幕中增加 ListView,可以在XML佈局檔中使用 <ListView> 標記添加,基本語法格式如下:<ListView android:屬性 = "值"> </ListView>
ListView 元件間接繼承自 ViewGroup 元件,因此 ViewGroup 的屬性也可使用在 ListView 元件,其他常用屬性還包括:
| XML屬性 | 描述 |
|---|---|
| divider | 設定分隔線,可以設定使用顏色值分隔或是以 Drawable 內的資源來分隔。 |
| dividerHeight | 設定分隔條的高度。 |
| entries | 使用陣列資源為 ListView 指定清單項。 |
| footerDividersEnabled | 設定是否在 footer View 之前繪製分隔線,預設值為true,設置為 false 時,表示不繪製。 |
| headerDividersEnabled | 設定是否在 header View 之後繪製分隔線,預設值為true,設置為 false 時,表示不繪製。 |
在Android 中,有兩種方式可以將資料以清單的方式顯示:一種是建立一個字串資源檔(Values Resource File),將列表的項目定義在資源檔中,再透過 XML 佈局檔中使用 <ListView> 標記,使用屬性 android:entries 設定顯示在 ListView 中;另一種是直接在 java 程式中,以字串陣列的方式儲存列表項目,再以 Adapter 的方式將字串陣列與 ListView 結合。以下就先看如何使用使用佈局 Layout,下一篇再來瞭解如何使用 Adapter。
[使用佈局 Layout]
在 res/values 目錄中建立一個定義陣列資源的 XML 檔 arrays.xml。先將左方的 res 目錄內,對 values 目錄按右鍵 →[New]→[Values Resource File],如下圖:輸入 arrays.xml 當作資源檔檔名。
在資源檔中,依格式輸入列表清單中的項目:
[程式範例]
(1)新建一個模組 Module,在 res/values 目錄下新增一個字串陣列檔,名為 arrays.xml,定義內容如下:<resources>
<string-array name="lv_item">
<item>香菇湯意麵</item>
<item>滷肉飯</item>
<item>餛飩板條</item>
<item>榨菜肉絲米粉</item>
<item>香菇湯意麵</item>
<item>豬肝麵</item>
<item>高麗菜水餃</item>
</string-array>
</resources>
(2) 進入 res/layout 目錄下點選佈局檔 activity_main.xml。將預設的內容刪除,建立 1 個 TextView 文字框,1 個 ListView,以下是完整 XML 的內容。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="40sp"
android:layout_marginTop="30sp"
android:textSize="26sp"
android:text="午餐要吃什麼?">
</TextView>
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:entries="@array/lv_item">
</ListView>
</LinearLayout>
(3)在 MainActivity.java 在 onCreate() 方法內,先建立與佈局檔的物件,用 findValueById 連結 ListView 元件,設定 setOnItemClickListener 監聽器,如果偵測到選項被按下,執行 onItemClick 程序,使用 getItemAtPosition 方法得知目前按下的值,再將按下該選項的值 Toast 顯示在畫面上。程式碼如下:
package com.example.mylistview;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;
public class lv_MainActivity extends AppCompatActivity {
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lv_main);
lv = (ListView) findViewById(R.id.lv);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
String result = parent.getItemAtPosition(position).toString();
Toast.makeText(lv_MainActivity.this, result, Toast.LENGTH_LONG).show();
}
});
}
}
執行的結果如下:
[參考資料]
- Developer : ListView
- 明日科技:Android 從入門到精通





張貼留言