ファイル選択アクティビティ ( Activity + ListView + 拡張子フィルタ + 複数ファイル選択 )

解説

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

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

実装

プロジェクトの作成

FileSelectionActivityMultiSelectTest」という名のプロジェクトを作成し、ファイル選択アクティビティ ( AlertActivity + ListView + 拡張子フィルタ ) と同内容のプログラムを実装します。

ファイル情報クラスの修正

ListViewで表示するときの一要素にあたるファイル情報クラス(FileInfoクラス)に、選択状態フラグを追加します。



「Cannot resolve symbol」エラーは、「Alt + Enter」で、必要なクラスをimportします。
リビルドし、エラー、警告がないことを確認します。

ファイル情報配列アダプタクラスの修正

ファイル情報配列アダプタクラス(FileInfoArrayAdapterクラス)の、ListViewのリスト表示における一要素のビューの生成(getView関数)において、選択状態フラグに応じて、一要素のビューの背景色、テキスト色を変えるように、修正します。

また、選択した項目を取得できるようにする関数を追加します。



「Cannot resolve symbol」エラーは、「Alt + Enter」で、必要なクラスをimportします。
リビルドし、エラー、警告がないことを確認します。

ファイル選択アクティビティクラスの修正

ListView内の項目をクリックしたときの処理(FileSelectionActivity#onItemClick関数)において、ファイルをクリックしたときには、選択状態フラグを切り替えるように修正します。

また、ファイル選択アクティビティに「OK」ボタンを追加し、「OK」ボタンのクリックによって、選択の終了を行うように修正します。

また、結果送信先には、ファイルオブジェクトの配列を返すように、呼び出し元へのパラメータ設定処理を修正します。



「Cannot resolve symbol」エラーは、「Alt + Enter」で、必要なクラスをimportします。
リビルドし、エラー、警告がないことを確認します。

メインアクティビティクラスの修正

ファイル選択アクティビティの修正にあわせて、メインアクティビティでの、アクティビティ呼び出し結果の取得の処理を修正します。



「Cannot resolve symbol」エラーは、「Alt + Enter」で、必要なクラスをimportします。
リビルドし、エラー、警告がないことを確認します。

実行

Android端末にて、動作確認。

青背景に白文字のファイルは選択している。白背景に黒文字のファイルは選択していない。


複数のファイルを選択し、「OK」ボタンを押すと、選択した複数のファイルパス名が、トーストで表示されます。


ひとつもファイルを選択していない状態。


ひとつもファイルを選択せずに、「OK」ボタンを押すと、「No file selected.」とトーストで表示され、ファイル選択アクティビティは閉じず、表示されたままになります。

ダウンロード

テストプロジェクト
github.com上のリポジトリページ

関連ページ

ファイル選択ダイアログ ( AlertDialog + ListView )

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


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

ファイル選択アクティビティ ( Activity + ListView )

ファイル選択アクティビティ ( Activity + ListView + 拡張子フィルタ )

ファイル選択アクティビティ ( Activity + ListView + 拡張子フィルタ + 複数ファイル選択 ) - 本ページ