Android開發筆記-ListActivity

內容說明:建立清單頁面

資料來源:Android南部工作坊

剛開始建立新專案時,系統自動產生的頁面是一個空白的Activity畫面,若是想要建立清單式的畫面,就要繼承ListActivity。空白的ListActivity頁面架構如下:

package moke.test;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;

// 繼承 ListActivity
public class page2 extends ListActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.page2);

    }
}

另外在 res/layout/main.xml 的參考頁面如下(2011.11.20 新增):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <ListView android:id="@+id/android:list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <TextView android:id="@+id/empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:text="無記錄"
        />
</LinearLayout>

在這個範例中,我們使用一維陣列來儲存要顯示在畫面中的內容,所以請先宣告一個一維陣列:

private String[] note_array = {
            "itme 1",
            "itme 2",
            "itme 3",
            "itme 4"
    };

接下來要實作 onCreate 方法。若是這個ListActivity的內容是空的,可以用下面的程式碼來顯示沒有資料時的訊息:

getListView().setEmptyView();

ListActivity的資料必需要使用Adapter來載入。這裡因為只是陣列,所以使用 ListAdapter 即可。在 onCreate 方法中輸入的完整程式碼如下:

// 無記錄
        getListView().setEmptyView(findViewById(R.id.empty));

        // 有記錄
        //ArrayAdapter is a vector. <string>型態宣告
        //android.R.layout 表示內建的layout
        ListAdapter adapter = new ArrayAdapter<string>(this,
                android.R.layout.simple_list_item_1,
                note_array);
        setListAdapter(adapter);

請自行將中間的空白去掉。simple_list_item_1 是系統內建的List Layout,只有二種樣式可以選擇。在這裡有人執行 simple_list_item_2 會錯誤,所以用1就好。

(2011.03.27 新增)

在其它的應用中,如果需要取得使用者選取的項目ID,可以參考下面的方法:

long rowId = getListView().getSelectedItemId();

ListView (2011.11.20 新增)

當我們的Activity沒有要使用ListActivity,卻要利用ListView來顯示資料時,可以直接使用ListView的方法來顯示資料:

ListView list = (ListView) findViewById(R.id.list);

        list.setEmptyView(findViewById(R.id.empty));    // 無記錄

        // 有記錄
        ListAdapter adapter = new ArrayAdapter<string>(this,
                android.R.layout.simple_list_item_1,
                note_array);
        list.setAdapter(adapter);

關連文章:使用Cursor讀取SQLite回傳值