タブレット用プログラムの書き止め

android OS & iPadOS の記録。

基礎。画像サムネイル表示。追加、MyDirectoryクラス。

2021-09-19 00:53:38 | Android studio 日記

フォルダを指定すると、その中のディレクトリとファイルを別々に配列で取得する。

 

public class MyDirectory {
    private File targetDir = null;
    private final ArrayList< MyNumbersInString> mDirNameList = new ArrayList<>();
    private final ArrayList< MyNumbersInString> mFileNameList = new ArrayList<>();
    private int dirIndexNo = 0, fileIndexNo = 0;

    public MyDirectory( File dir ) {
        if ( dir == null || !dir.exists() || !dir.isDirectory()) return;
        targetDir = dir;
        initMyDirectory(dir);
    }
    private void initMyDirectory( File dir ) {

        String name = dir.getPath();
        File[] files = new File( name ).listFiles();

        for (File file : files) {
            if (file.isDirectory()) {
                mDirNameList.add(new MyNumbersInString(file.getName()));
            } else if (file.isFile()) {
                name = file.getName();
                name.toLowerCase(); //小文字に変換
                if (name.endsWith(".jpg") || name.endsWith(".png")) { //画像ファイル選択
                    mFileNameList.add(new MyNumbersInString(file.getName()));
                }
            }
        }

        Collections.sort(
                mDirNameList, new Comparator< MyNumbersInString>() {
                    @Override
                    public int compare(MyNumbersInString mn1, MyNumbersInString mn2) {
                        return mn1.getName2().compareTo(mn2.getName2());
                    }
                }
        );
        Collections.sort(
                mFileNameList, new Comparator< MyNumbersInString>() {
                    @Override
                    public int compare(MyNumbersInString mn1, MyNumbersInString mn2) {
                        return mn1.getName2().compareTo(mn2.getName2());
                    }
                }
        );
    }
    public File getTargetDir() {
        return targetDir;
    }
    public boolean resetTargetDir( File dir ) {
        if ( dir == null || !dir.exists() || !dir.isDirectory() ) return false;
        if ( targetDir != null ) close();

        targetDir = dir;
        initMyDirectory(dir);
        return true;
    }


    public String getDirName() {
        return mDirNameList.get(dirIndexNo).getName();
    }
    public String getDirName(int no) {
        if ( no < 0 || no >= mDirNameList.size() )
            return null;

        return mDirNameList.get(no).getName();
    }
    public String getNextDirName() {
        if ( ++dirIndexNo >= mDirNameList.size() ) {
            dirIndexNo--;
            return null;
        }

        return mDirNameList.get(dirIndexNo).getName();
    }
    public String getPrevDirName() {
        if ( --dirIndexNo < 0 ) {
            dirIndexNo = 0;
            return null;
        }

        return mDirNameList.get(dirIndexNo).getName();
    }
    public boolean setDirIndexNo( int no ) {
        if ( no < 0 || no >= mDirNameList.size() )
            return false;
        dirIndexNo = no;
        return true;
    }
    public int getDirListSize() {
        return mDirNameList.size();
    }

    public String getFileName() {
        return mFileNameList.get(fileIndexNo).getName();
    }
    public String getFileName( int no ) {
        if ( no < 0 || no >= mFileNameList.size() )
            return null;

        return mFileNameList.get(no).getName();
    }
    public String getNextFileName() {
        if ( ++fileIndexNo >= mFileNameList.size() ) {
            fileIndexNo--;
            return null;
        }
        return mFileNameList.get(fileIndexNo).getName();
    }
    public String getPrevFileName() {
        if (--fileIndexNo < 0) {
            fileIndexNo = 0;
            return null;
        }
        return mFileNameList.get(fileIndexNo).getName();
    }
    public boolean setFileIndexNo( int no ) {
        if ( no < 0 || no >= mFileNameList.size() )
            return false;
        fileIndexNo = no;
        return true;
    }
    public int getFileListSize() {
        return mFileNameList.size();
    }
    public void close() {
        targetDir = null;
        mDirNameList.clear();
        mFileNameList.clear();
    }
}