gpt4 book ai didi

android - ArrayList 按名称排序

转载 作者:搜寻专家 更新时间:2023-11-01 08:36:20 27 4
gpt4 key购买 nike

我的 ArrayList 面临 3 个问题。它从我的 SD 卡中读取没有任何问题的文件。

文件有这样的结构:

1.3.2016.csv
2.3.2016.csv
29.2.2016.csv
30.2.2016.csv
4.2.2016.csv

这是我从sdcard读取文件的方法:

private List<String> getList(File parentDir) {

ArrayList<String> inFiles = new ArrayList<String>();
String[] fileNames = parentDir.list();
for (String fileName : fileNames) {
if (fileName.toLowerCase().endsWith(".csv")) {
inFiles.add(removeLastChar(fileName));
} else {
File file = new File(File.separator + fileName + ".csv");
if (file.isDirectory()) {
inFiles.addAll(getList(((file))));
}
}
}

itemTexte.addAll(Arrays.asList(fileNames));
return inFiles;
}

private static String removeLastChar(String str) {
return str.substring(0,str.length()-4);
}

这是我从 onCreate 调用的内容:

List<String> files = getList(new File(Environment.getExternalStorageDirectory() + File.separator + "Test" + File.separator + "Files"));
  1. 第一个问题。我不想在回收站 View 中看到“.csv”。所以我尝试从中删除 4 个字符(请参阅 removeLastChar 方法)。但无论我做什么,它最后都停留在“.csv”。

  2. 我想按文件名订购回收站 View 。目前它不按名称排序。我尝试了 Comparator 方法,但我不明白应该如何在那里解析我的元素。

  3. 即使我的文件没有以“.csv”结尾,它们仍会显示在回收站 View 中。看起来它捕获了文件夹中的所有文件。

更新我可以用这个对我的列表进行排序(谢谢大家):

    Collections.sort(inFiles);

但有点不对...示例:

1.3.2016
10.2.2016
11.4.2016
2.3.2016
3.3.2016

但它应该是这样的:

10.2.2016
1.3.2016
2.3.2016
3.3.2016
11.4.2016

有什么简单的解决方法吗?或者我应该在用户创建文件时将“0”写入文件吗?

更新 2

所以我加了这个

Collections.sort(inFiles, new Comparator<String>() {

@Override
public int compare(String s1, String s2) {
String[] s1Values = s1.split(".");
String[] s2Values = s1.split(".");
//define your comparison, arrays will have each value between '.', e.g. {"1", "3", "2016", "csv" } for "1.3.2016.csv"
int compare_result = s1.compareTo(s2);
return compare_result; //return -1 if s1 < s2, 0 if equal, 1 if s1 > s2
}
});

我的列表是这样的

01.04.2016
02.04.2016
15.04.2016
16.03.2016

但是 16.03.2016 应该是第一个......提前感谢您的帮助!

最佳答案

1. 您的删除文件扩展名方法应该有效。我认为您的问题是您没有将新列表添加到 itemTexte,而是添加了原始文件列表。

改变

itemTexte.addAll(Arrays.asList(fileNames));

itemTexte.addAll(inFiles );

2.

Collections.sort(inFiles);

3. 查看 #1 的修复

关于android - ArrayList<String> 按名称排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36358559/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com