[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();
}


留言
張貼留言