ListViewで複数選択をする方法

誤ったやりかた

手動で設定する方法書いたけど、バグがありました。*1
かなり致命的です。

リストのアイテムを使いまわしているらしくて、一度チェックしたらいくつかのチェックボックスが同時にオンになってしまいます。

正しいやりかた

ListView::setChoiceMode(:int)っていうメソッドがあるからこれ使います。
引数はListViewクラスに静的に定義されている以下の3つがあります

  • ListView.CHOICE_MODE_NONE
  • ListView.CHOICE_MODE_SINGLE
  • ListView.CHOICE_MODE_MULTIPLE

最初に何も設定しないで動かすとチェックボックスが選択されないところを見ると、初期値はListView.CHOICE_MODE_NONEみたいですね
ListView.CHOICE_MODE_MULTIPLEを設定してあげることで、複数選択ができるようになります。

ソース

ListView list = (ListView)findViewById(android.R.id.list);
list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

パーペキ