Android ListView

qingyezhu發表於2014-04-04

 

Java核心程式碼:

package com.example.demolistview1;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MultipleListViewActivity extends ListActivity {

    private static final String[] DATA = { "開始加班了", "哈哈哈", "不告訴你們",
            "就是不告訴你們呀!", "Hello World!", "java", "C#", "item1", "item2",
            "apple", "test" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_multiple_choice, DATA);

        // 使用ListActivity中的setListAdapter
        setListAdapter(arrayAdapter);

        // 獲取ListActivity中的ListView
        final ListView listView = getListView();

        // setChoiceMode方法:
        // 表名有選項,如果不設定,預設為none,即點選後仍無反應
        listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        // TODO Auto-generated method stub
        super.onListItemClick(l, v, position, id);
        Toast.makeText(getApplicationContext(), DATA[position],
                Toast.LENGTH_SHORT).show();
    }
}

 

備註:

該示例中使用了Android系統提供的ListActivity建立ListView,與普通的Activity的不同在於 ListActivity中自帶一個ListView的控制元件,在ListActivity中可以通過getListView()方法得到 ListActivity中的ListView,並可以通過setListAdapter()方法為ListView設定Adapter。

ArrayAdapter的建構函式的第一個引數為Context,在這裡設定為this就好了。第二個引數決定了ListView的不同風 格,android.R.layout.simple_list_item_multiple_choice為多選的風格。最後一個引數決定了 ArrayAdapter使用的String陣列,DATA陣列。
其中,第二個引數還可以是:
android.R.layout.simple_list_item_1
android.R.layout.simple_list_item_2
android.R.layout.simple_list_item_single_choice
android.R.layout.simple_list_item_checked
通過字面意思便可以理解,讀者可以自己測試一下。
另外,需要注意的是,僅僅在ArrayAdapter中設定為多選風格是不行的,執行工程會發現點選不同的選項,多選框沒有反應。需要通過ListView的setChoiceMode(ListView()方法才可以實現多選的效果。

相關文章