0

我正在使用字符串的 Arraylist: ArrayList entries = new ArrayList(Arrays.asList(""));

并动态地赋予价值。它可能包含目录或文件的名称。

我需要在 ListView 中显示条目,以便首先按排序顺序显示所有目录,然后按排序顺序显示文件。

这可能吗?如果是的话,有什么提示吗?感谢帮助..我正在使用

Collections.sort(条目); 对我的条目进行排序。

4

2 回答 2

0

我已经做了。使用的逻辑:将条目分成两个ArrayList。一个具有目录其他文件。分别对这两个 ArrayList 进行排序。最后将这两个添加到“条目”中。这是代码:

private void sortEntries(String path){
    ArrayList<String> entriesDir = new ArrayList<String>(Arrays.asList(""));
    ArrayList<String> entriesFile = new ArrayList<String>(Arrays.asList(""));
    entriesDir.removeAll(entriesDir);
    entriesFile.removeAll(entriesFile);
    int fileCounter=0, dirCounter=0;
    path = path.equals("/") ? "" : path;
    for(int i=1;i<=entries.size();i++){
        if((new File(path+"/"+entries.get(i-1))).isFile()) entriesFile.add(fileCounter++, entries.get(i-1));
        else entriesDir.add(dirCounter++, entries.get(i-1));
    }
    Collections.sort(entriesDir,String.CASE_INSENSITIVE_ORDER);
    Collections.sort(entriesFile,String.CASE_INSENSITIVE_ORDER);
    entries.removeAll(entries);
    entries.addAll(entriesDir);
    entries.addAll(entriesFile);
}
于 2013-05-19T00:16:02.167 回答
0

使用带有自定义比较器的 2 参数版本。比较它:

boolean firstFileIsDirectory = file1.isDirectory();
boolean secondFileIsDirectory = file2.isDirectory();
if(firstFileIsDirectory  && !secondFileIsDirectory){
    return -1;
}
if(!firstFileIsDirectory  && secondFileIsDirectory){
    return 1;
}
return String.compare(filename1, filename2);
于 2013-05-18T06:04:50.447 回答