我正在使用字符串的 Arraylist: ArrayList entries = new ArrayList(Arrays.asList(""));
并动态地赋予价值。它可能包含目录或文件的名称。
我需要在 ListView 中显示条目,以便首先按排序顺序显示所有目录,然后按排序顺序显示文件。
这可能吗?如果是的话,有什么提示吗?感谢帮助..我正在使用
Collections.sort(条目); 对我的条目进行排序。
我正在使用字符串的 Arraylist: ArrayList entries = new ArrayList(Arrays.asList(""));
并动态地赋予价值。它可能包含目录或文件的名称。
我需要在 ListView 中显示条目,以便首先按排序顺序显示所有目录,然后按排序顺序显示文件。
这可能吗?如果是的话,有什么提示吗?感谢帮助..我正在使用
Collections.sort(条目); 对我的条目进行排序。
我已经做了。使用的逻辑:将条目分成两个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);
}
使用带有自定义比较器的 2 参数版本。比较它:
boolean firstFileIsDirectory = file1.isDirectory();
boolean secondFileIsDirectory = file2.isDirectory();
if(firstFileIsDirectory && !secondFileIsDirectory){
return -1;
}
if(!firstFileIsDirectory && secondFileIsDirectory){
return 1;
}
return String.compare(filename1, filename2);