import java.io.File; //导入方法依赖的package包/类
public void sortAdapter() {
final int sortMethod = AppSettings.get().getSortMethod();
final boolean sortReverse = AppSettings.get().isSortReverse();
int count = _filesCurrentlyShown.size();
int lastFolderIndex = 0;
for (int i = 0; i < count; i++) {
if (_filesCurrentlyShown.get(i).isDirectory()) {
lastFolderIndex++;
}
}
Comparator comparator = new Comparator() {
@Override
public int compare(File file, File other) {
if (sortReverse) {
File swap = file;
file = other;
other = swap;
}
switch (sortMethod) {
case SORT_BY_NAME:
return new File(file.getAbsolutePath().toLowerCase()).compareTo(
new File(other.getAbsolutePath().toLowerCase()));
case SORT_BY_DATE:
return Long.valueOf(other.lastModified()).compareTo(file.lastModified());
case SORT_BY_FILESIZE:
if (file.isDirectory() && other.isDirectory()) {
return other.list().length - file.list().length;
}
return Long.valueOf(other.length()).compareTo(file.length());
}
return file.compareTo(other);
}
};
Collections.sort(_filesCurrentlyShown.subList(0, lastFolderIndex), comparator);
Collections.sort(_filesCurrentlyShown.subList(lastFolderIndex, count), comparator);
reloadAdapter();
}