我正在使用字符串的Arraylist: ArrayList entries = new ArrayList(Arrays.asList(“”));
动态赋值。它可能包含目录或文件的名称。
我需要在ListView中显示条目,以便首先按排序顺序显示所有目录,然后按排序顺序显示文件。
这可能吗?如果有,任何提示?感谢帮助..我正在使用
Collections.sort(条目); 对我的参赛作品进行排序。
答案 0 :(得分: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);
答案 1 :(得分:0)
我做到了。使用的逻辑:将条目分成两个ArrayList。一个有目录的其他文件。分别对这两个ArrayLists进行排序。最后将这两个添加到“条目”。这是代码:
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);
}