[Android] 可多選的ListView (multi choice)
ListView除了用來呈現同性質的資料之外,也提供了選取模式(choice mode),讓使用者可以從List中勾選一個或多個row,本文將針對如何建立可多選的ListView與該如何取得選擇的資料進行說明。
程式碼說明
1. 建立ListActivity。
package com.MultiChoiceList; 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 MultiChoiceList extends ListActivity { private String[] listData = {"Taiwan", "Japan", "US", "Hongkong", "China", "Guam", "Korea"}; private ListView list; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } }2. 定義Layout XML,由於是ListActivity,因此Layout必須包含一個id名為@android:id/list的ListView。
<?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Show Result" android:onClick="showResult"> /> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>3. 將ListView設定為Multi Choice Mode。
//設定ListView為Multi-choice mode list = getListView(); list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);4. 指定Adapter為android.R.layout.simple_list_item_multiple_choice,它是一個CheckTextView,可以讓ListView管理其checked狀態。
//指定List Adapter list.setAdapter( new ArrayAdapter< string>(this, android.R.layout.simple_list_item_multiple_choice, listData));5. 取得ListView目前選擇的資料,並以Toast訊息顯示(見下圖)。
public void showResult(View v){ String countries = ""; for(int i=0;i< list.getCheckedItemPositions().size();i++) { countries += listData[list.getCheckedItemPositions().keyAt(i)]+","; } Toast.makeText(this, countries, 3000).show(); }
留言
張貼留言