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()方法才可以實現多選的效果。