From ebc67459cf277a95a366bd6df3e7bb3347adefdc Mon Sep 17 00:00:00 2001 From: Gyubin Han Date: Mon, 5 Jan 2026 01:16:16 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=ED=8C=8C=EC=9D=BC=20=EB=AA=A9=EB=A1=9D?= =?UTF-8?q?=20=EC=A0=95=EB=A0=AC=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=20(=EC=9D=B4=EB=A6=84=EC=88=9C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../be/gyu/android/file/explorer/FileItem.java | 14 +++++++++++++- .../be/gyu/android/file/explorer/MainActivity.java | 3 +++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/be/gyu/android/file/explorer/FileItem.java b/app/src/main/java/be/gyu/android/file/explorer/FileItem.java index f5335b8..029031a 100644 --- a/app/src/main/java/be/gyu/android/file/explorer/FileItem.java +++ b/app/src/main/java/be/gyu/android/file/explorer/FileItem.java @@ -1,6 +1,6 @@ package be.gyu.android.file.explorer; -public class FileItem { +public class FileItem implements Comparable { private String name; private String path; private boolean isDirectory; @@ -22,4 +22,16 @@ public class FileItem { public boolean isDirectory() { return isDirectory; } + + @Override + public int compareTo(FileItem other) { + // Directories first + if (this.isDirectory() && !other.isDirectory()) { + return -1; + } else if (!this.isDirectory() && other.isDirectory()) { + return 1; + } + // Then sort by name, case-insensitively + return this.name.compareToIgnoreCase(other.name); + } } \ No newline at end of file diff --git a/app/src/main/java/be/gyu/android/file/explorer/MainActivity.java b/app/src/main/java/be/gyu/android/file/explorer/MainActivity.java index 3d4b289..4d23203 100644 --- a/app/src/main/java/be/gyu/android/file/explorer/MainActivity.java +++ b/app/src/main/java/be/gyu/android/file/explorer/MainActivity.java @@ -32,6 +32,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; +import java.util.Collections; import java.util.List; public class MainActivity extends AppCompatActivity implements FileAdapter.OnItemClickListener { @@ -113,6 +114,7 @@ public class MainActivity extends AppCompatActivity implements FileAdapter.OnIte String fullPath = path.equals("/") ? "/" + file.getName() : path + "/" + file.getName(); fileList.add(new FileItem(file.getName(), fullPath, file.isDirectory())); } + Collections.sort(fileList); } else { Toast.makeText(this, "Cannot read this directory!", Toast.LENGTH_SHORT).show(); } @@ -154,6 +156,7 @@ public class MainActivity extends AppCompatActivity implements FileAdapter.OnIte for (File file : files) { fileList.add(new FileItem(file.getName(), file.getAbsolutePath(), file.isDirectory())); } + Collections.sort(fileList); } else { Toast.makeText(this, "Cannot read this directory!", Toast.LENGTH_SHORT).show(); }