ファイル選択ダイアログ ( AlertDialog + ListView + 拡張子フィルタ + 複数ファイル選択 )

(開発環境として「Eclipse」を使用した、古い情報です。
 開発環境として「Android Studio」を使用した、新しい情報は、
 「ホーム > プログラミング > Android プログラミング」からたどれます。)

解説

ファイル選択ダイアログ ( AlertDialog + ListView )ファイル選択ダイアログ ( AlertDialog + ListView + 拡張子フィルタ ) で作成したファイル選択ダイアログは、一つのファイルの選択でした。これに複数のファイルを選択できる機能を追加します。

実現方法としては、以下です。

サンプルコード

プロジェクトの作成

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 + 拡張子フィルタ + 複数ファイル選択 )