ListView で MultipleChoice モード

ListView で複数選択できるような List を作ることができます.

基本的には ListView や SingleChoice と同じ.
Adapter の作成時に Muliple Choice ようのレイアウトを設定するのと
setChoiceMode で ListView.CHOICE_MODE_MULTIPLEを設定するくらい
すると CheckBox 付きのリストが表示されます.

というわけで,MultipleChoiceList をいじってみた.

サンプルコード
  1. public class MultipleChoiceListViewSample extends Activity {  
  2.   @Override  
  3.   public void onCreate(Bundle savedInstanceState) {  
  4.     super.onCreate(savedInstanceState);  
  5.     setContentView(R.layout.listview_sample);  
  6.     ListView listView = (ListView)findViewById(R.id.ListView);  
  7.   
  8.     // アダプタの作成  
  9.     listView.setAdapter(new ArrayAdapter<String>(  
  10.         this,  
  11.         android.R.layout.simple_list_item_multiple_choice,  
  12.         DAYS)  
  13.     );  
  14.   
  15.     // フォーカスが当たらないよう設定  
  16.     listView.setItemsCanFocus(false);  
  17.   
  18.     // 選択の方式の設定  
  19.     listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);  
  20.       
  21.     for (int i = 1; i < 6; i++) {  
  22.       // 指定したアイテムがチェックされているかを設定  
  23.       listView.setItemChecked(i, true);  
  24.     }  
  25.       
  26.     // アイテムがクリックされたときに呼び出されるコールバックを登録  
  27.     listView.setOnItemClickListener(new OnItemClickListener() {  
  28.       @Override  
  29.       public void onItemClick(AdapterView<?> parent,  
  30.               View view, int position, long id) {  
  31.           // クリックされた時の処理  
  32.       }  
  33.     });  
  34.       
  35.     // 現在チェックされているアイテムを取得  
  36.     // チェックされてないアイテムは含まれない模様  
  37.     SparseBooleanArray checked = listView.getCheckedItemPositions();  
  38.     for (int i = 0; i < checked.size(); i++) {  
  39.       // チェックされているアイテムの key の取得  
  40.       int key = checked.keyAt(i);  
  41.       Log.v(getClass().getSimpleName(), "values: " + DAYS[key]);  
  42.     }  
  43.   }  
  44.     
  45.   // ListView に表示させる文字列  
  46.   private static final String[] DAYS = new String[] {  
  47.     "Sunday""Monday""Tuesday""Wednesday",  
  48.     "Thursday""Friday""Saturday"  
  49.   };  
  50. }  
XMLリソース
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.   android:orientation="vertical"   
  4.   android:layout_width="fill_parent"  
  5.   android:layout_height="fill_parent">  
  6.   <TextView android:layout_width="fill_parent"  
  7.     android:layout_height="wrap_content"   
  8.     android:text="ListSample" />  
  9.   <ListView   
  10.     android:layout_width="fill_parent"  
  11.     android:layout_height="0dip"   
  12.     android:layout_weight="1"  
  13.     android:id="@+id/ListView">  
  14.   </ListView>  
  15. </LinearLayout>  

実行すると...



こんな感じ!


参考サイト
http://developer.android.com/intl/ja/reference/android/widget/ListView.html

0 件のコメント:

コメントを投稿