ファイル選択機能の改善 - 壁紙変更アプリ (11)
やっと落ち着いてきたので開発再開です。
前回、階層を上がれるようになりましたが、まだ色々と細かい問題があります。
1. ".." を辿って "/" に移動すると何も表示されない
2. 初期位置を "/" にしても ".." が表示される
これらを修正します。
1. の原因は以下の処理で、"/Storage" などを処理すると、Path が空になるためです。
prePath = prePath.substring(0,prePath.lastIndexOf(File.separator));
これを、Path が空になった際は "/" に変更します。
curPath = curPath.substring(0, curPath.lastIndexOf(File.separator)); if(curPath.equals("")) { curPath = "/"; }
2. の原因は以下の処理で、常に ".." を追加しているためです。
if (files != null) { for (int i = 0; i < files.length; i++) { item_list.add(files[i].getName()); } item_list.add(".."); }
これを、"/" の時だけ特別扱いします。
ついでに切り出して共通化します。
".." 追加処理を条件分岐の外に出したのは、
ディレクトリが空だと ".." が表示されないためです。
/** * Crate file list */ private void createFileList() { if (files != null) { for (int i = 0; i < files.length; i++) { item_list.add(files[i].getName()); } } if (!curPath.equals("/")) { item_list.add(".."); } }
これでひと通りファイル選択が出来るようになったはずです。
次は画像ファイルのみ出力するようにします。