Как получить отсортированный массив с путями к файлам Android?

Я хотел бы получить массив с отсортированными путями к файлам. Мне удалось получить отсортированный массив с такими именами файлов:

fileList.addAll(Arrays.asList(curFolder.list()));
Collections.sort(fileList);

и я знаю о таком способе получения путей к файлам:

folder.listFiles()

Я также знаю, что могу сортировать все пути к файлам по имени или дате, но мне это не удалось. В конце я добавлю эти пути к моему адаптеру recyclerView:

FileManagerAdapter fileManagerAdapter = new FileManagerAdapter(this, (ArrayList<String>) fileList, curFolder.listFiles());

может быть, мне нужно получить путь к файлу на адаптере или что? Надеюсь вы мне поможете :)

И какой у вас здесь вопрос? Какая часть проблемная? Сортировка или адаптер?

ADM 22.04.2019 10:23

@ADM, моя проблема в том, что я не могу сортировать File[] по именам, таким как мой массив списка файлов.

Andrew 22.04.2019 10:25

@ADM, не могли бы вы объяснить этот вопрос, пожалуйста, потому что я все еще не могу понять, как решить мою проблему?

Andrew 22.04.2019 10:43
0
4
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я решил свою проблему:

File[] files = curFolder.listFiles();

Arrays.sort(files, (f1, f2) -> {
if (f1.isDirectory() && !f2.isDirectory()) {
return -1;
} else if (!f1.isDirectory() && f2.isDirectory()) {
return 1;
} else {
return f1.compareTo(f2);
}
});

и в результате:

[/storage/emulated/0/Alarms, /storage/emulated/0/Android, /storage/emulated/0/DCIM, /storage/emulated/0/Download, /storage/emulated/0/Jobnetzwerk, /storage/emulated/0/Movies, /storage/emulated/0/Music, /storage/emulated/0/Notifications, /storage/emulated/0/Pictures, /storage/emulated/0/Podcasts, /storage/emulated/0/Ringtones]

Другие вопросы по теме