ファイル選択ダイアログ ( AlertDialog + ListView + 拡張子フィルタ + 複数ファイル選択 )
(開発環境として「Eclipse」を使用した、古い情報です。
開発環境として「Android Studio」を使用した、新しい情報は、
「ホーム > プログラミング > Android プログラミング」からたどれます。)
解説
ファイル選択ダイアログ ( AlertDialog + ListView )、ファイル選択ダイアログ ( AlertDialog + ListView + 拡張子フィルタ ) で作成したファイル選択ダイアログは、一つのファイルの選択でした。これに複数のファイルを選択できる機能を追加します。
実現方法としては、以下です。
- ListViewで表示するときの一要素にあたるファイル情報クラス(FileInfoクラス)に、選択状態フラグを追加する。
- ListView内の項目をクリックしたときの処理(FileSelectionDialog#onItemClick関数)において、ファイルをクリックしたときには、選択状態フラグを切り替える。
- ファイル情報配列アダプタクラス(FileInfoArrayAdapterクラス)の、ListtViewのリスト表示における一要素のビューの生成(getView関数)において、選択状態フラグに応じて、一要素のビューの背景色、テキスト色を変える。
- ファイル選択ダイアログに「OK」ボタンを追加し、「OK」ボタンのクリックによって、選択の終了を行う。
サンプルコード
プロジェクトの作成
FileSelectionDialogMultiSelectSample という名のプロジェクトを作成し、ファイル選択ダイアログ ( AlertDialog + ListView + 拡張子フィルタ ) と同内容のプログラムを実装します。
ファイル情報クラスの修正
ListViewで表示するときの一要素にあたるファイル情報クラス(FileInfoクラス)に、選択状態フラグを追加します。
ファイル情報配列アダプタクラスの修正
ファイル情報配列アダプタクラス(FileInfoArrayAdapterクラス)の、ListtViewのリスト表示における一要素のビューの生成(getView関数)において、選択状態フラグに応じて、一要素のビューの背景色、テキスト色を変えるように、修正します。
また、選択した項目を取得できるようにする関数を追加します。
ファイル選択ダイアログクラスの修正
ListView内の項目をクリックしたときの処理(FileSelectionDialog#onItemClick関数)において、ファイルをクリックしたときには、選択状態フラグを切り替えるように修正します。
また、ファイル選択ダイアログに「OK」ボタンを追加し、「OK」ボタンのクリックによって、選択の終了を行うように修正します。
また、結果送信先には、ファイルオブジェクトの配列を返すように、ファイル選択ダイアログのリスナーインターフェースを修正します。
メインアクティビティクラスの修正
ファイル選択ダイアログのコンストラクタの修正にあわせて、メインアクティビティでの、ファイルが選択されたときに呼び出される関数を修正します。
実行
Android Virtual Device にて、動作確認。
青背景に白文字のファイルは選択している。白背景に黒文字のファイルは選択していない。
複数のファイルを選択し、「OK」ボタンを押すと、選択した複数のファイルパス名が、トーストで表示されます。
ひとつもファイルを選択していない状態。
ひとつもファイルを選択せずに、「OK」ボタンを押すと、「No file selected.」とトーストで表示され、ファイル選択ダイアログは閉じず、表示されたままになります。
ダウンロード
関連ページ
ファイル選択ダイアログ ( AlertDialog + ListView )
ファイル選択ダイアログ ( AlertDialog + ListView + 拡張子フィルタ )
ファイル選択アクティビティ ( Activity + ListView )
ファイル選択アクティビティ ( Activity + ListView + 拡張子フィルタ )
ファイル選択アクティビティ ( Activity + ListView + 拡張子フィルタ + 複数ファイル選択 )