! actionmode-listview (API Level 11)

Android 3.0 で導入されたアクションモード使うことで ListView で
複数アイテムを選択して、それらに対する実行することができる。

これは複数のメールを選択した上でそれらすべてを削除するような場面で用いられる。


! 手順

!! ListView や GridView を複数選択モードに設定

リスト項目のレイアウトを複数選択用のものに設定したうえで、以下のメソッドで
複数選択モード (ListView.CHOICE_MODE_MULTIPLE_MODAL)にする。

* ListView#setChoiceMode(int choideMode) 

ListView.CHOICE_MODE_MULTIPLE_MODAL は CHOICE_MODE_MULTIPLE  と異なり
ロングタップしてアクションモードに入った時にしかリスト項目の選択ができない。


!! ListView や GridView にアクションモード用のリスナーを設定

MultiChoiceModeListener を実装したうえで以下のメソッドを呼び出す。

* ListView#setMultiChoiceModeListener(MultiChoiceModeListener listener) : void


MultiChoiceModeListener は以下のメソッドを実装することでアクションモードを
実現する。

* onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) : void
* onCreateActionMode(ActionMode mode, Menu menu) : boolean 
* onPrepareActionMode(ActionMode mode, Menu menu) : boolean 
* onActionItemClicked(ActionMode mode, MenuItem item) : boolean 
* onDestroyActionMode(ActionMode mode) : void

onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) : void
は各項目の選択状態が変わった際に呼ばれるコールバック。

onCreateActionMode(ActionMode mode, Menu menu) : boolean 
はこのアクションモードに入った際に呼ばれるコールバック。
ここでアクションアイテムの作成やタイトルの設定などを行う。
ここで作成したメニューアイテムはこのアクションモード専用のものとなる。

onPrepareActionMode(ActionMode mode, Menu menu) : boolean 
はこのアクションモードになる直前に呼ばれるコールバック。
onCreateActionMode() より後でり、アクションアイテムなどの
各種ビューが初期化完了している事が期待できる。

onActionItemClicked(ActionMode mode, MenuItem item) : boolean 
はアクションアイテムがクリックした際のコールバック。

onDestroyActionMode(ActionMode mode) : void
はアクションモード終了時のコールバック。
ActionMode#finish() を呼び出したり、左上の「×」をクリックして
アクションモードが終了したときに呼ばれる。


基本的な流れは、
onCreateActionMode(ActionMode mode, Menu menu) : boolean 
で処理を実行するためのアクションアイテムを menu に作成して、
アクションアイテムがクリックされた際のリスナーである
onActionItemClicked(ActionMode mode, MenuItem item) : boolean 
で実際の処理を開始する。


!! ビルドターゲット

http://maven-android-plugin-m2site.googlecode.com/svn/plugin-info.html

* mvn compile - アプリケーションのコンパイル
* mvn package - apk の作成
* mvn clean - ビルドファイルの削除
* mvn install - maven の local リポジトリにインストール

* mvn android:deploy - エミュレータやデバイスにインストール
* mvn android:generate-sources

* mvn install - アプリケーションのインストール
* mvn uninstall - アプリケーションのアンインストール


