ファイル選択アクティビティ ( Activity + ListView + 拡張子フィルタ + 複数ファイル選択 )
解説
ファイル選択アクティビティ ( AlertActivity + ListView )、ファイル選択アクティビティ ( AlertActivity + ListView + 拡張子フィルタ ) で作成したファイル選択アクティビティは、一つのファイルの選択でした。これに複数のファイルを選択できる機能を追加します。
実現方法としては、以下です。
- ListViewで表示するときの一要素にあたるファイル情報クラス(FileInfoクラス)に、選択状態フラグを追加する。
- ListView内の項目をクリックしたときの処理(FileSelectionActivity#onItemClick関数)において、ファイルをクリックしたときには、選択状態フラグを切り替える。
- ファイル情報配列アダプタクラス(FileInfoArrayAdapterクラス)の、ListtViewのリスト表示における一要素のビューの生成(getView関数)において、選択状態フラグに応じて、一要素のビューの背景色、テキスト色を変える。
- ファイル選択アクティビティに「OK」ボタンを追加し、「OK」ボタンのクリックによって、選択の終了を行う。
実装
プロジェクトの作成
「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 + 拡張子フィルタ + 複数ファイル選択 ) - 本ページ