だいぶ慣れてきました。
今回はリストを複数選択できるようにします。
ポイントとなるのは次の3点です。
- android.R.layout.simple_list_item_multiple_choice
- Javaソースの26行目です。
- これをArrayAdapterのコンストラクタに渡すことで、チェックボックスが表示されます。
- setChoiceMode(ListView.CHOICE_MODE_MULTIPLE)
- Javaソースの37行目です。
- コメントにある通り、これを実行する事で複数選択が可能となります。
- android:choiceMode="multipleChoice"
- xmlの方の11行目。
- ここでも複数選択を指定してやります。
import android.app.Activity; import android.os.Bundle; import android.util.SparseBooleanArray; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; public class ListView03 extends Activity implements OnItemClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // ListViewで表示するデータを作成 for (int i = 0; i < mWords.length; i++) { mWords[i] = String.valueOf(i); } // リストアダプタを作成 ArrayAdapter<String> adapter = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_multiple_choice, mWords); // リストアダプタをリストビューにセット mListView = (ListView) findViewById(R.id.listview); mListView.setAdapter(adapter); // ListView内部のViewがフォーカス出来ないようにする mListView.setItemsCanFocus(false); // 複数選択可能にする mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); // クリックイベントを取得 mListView.setOnItemClickListener(this); } @Override public void onItemClick( AdapterView<?> parent, View view, int position, long id) { // 選択状態を取得する SparseBooleanArray checked = mListView.getCheckedItemPositions(); // 選択された要素をトーストで表示 String word = ""; for (int i = 0; i < mWords.length; i++) { word += mWords[i] + ":" + checked.get(i) + System.getProperty("line.separator"); } Toast.makeText(this, word, Toast.LENGTH_LONG).show(); } private ListView mListView; private String[] mWords = new String[10]; }"res/layout/main.xml"のコードは以下の通り
<linearlayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" > <listview android:id="@+id/listview" android:layout_height="fill_parent" android:layout_width="fill_parent" android:choicemode="multipleChoice" > </linearlayout>
AndroidManifest.xmlは割愛します(いつもと一緒だから。。。)。
(チェックボックスが選択されているのがTrueになってます。)
0 件のコメント:
コメントを投稿