エンジニア未満がエンジニア以上を目指す日々(仮)

戦力外通告の悔しさをバネに自身の技術力向上を目指した技術ブログ

ファイル選択機能の改善 - 壁紙変更アプリ (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("..");
        }
    }

これでひと通りファイル選択が出来るようになったはずです。
次は画像ファイルのみ出力するようにします。