Android ArrayList排序
在这里我添加了一些路径上的文件和文件夹列表到ArrayList,如何首先对所有文件夹进行排序,最后对所有文件进行排序。为了实现这一点,我应该使用什么样的排序技术。提前谢谢 更新:CustomAdapterAndroid ArrayList排序,android,arraylist,android-arrayadapter,Android,Arraylist,Android Arrayadapter,在这里我添加了一些路径上的文件和文件夹列表到ArrayList,如何首先对所有文件夹进行排序,最后对所有文件进行排序。为了实现这一点,我应该使用什么样的排序技术。提前谢谢 更新:CustomAdapter private List<String> mitem = null; private List<String> mpath = null; String dirPath = Environment.getExternalStorageDirectory().getPat
private List<String> mitem = null;
private List<String> mpath = null;
String dirPath = Environment.getExternalStorageDirectory().getPath();
private void getDir() {
mitem = new ArrayList<String>();
mpath = new ArrayList<String>();
File f = new File(dirPath);
File[] files = f.listFiles();
for (int i = 0; i < files.length; i++) {
File file = files[i];
if (!file.isHidden() && file.canRead()) {
mpath.add(file.getPath());
if (file.isDirectory()) {
// Folder names
mitem.add(file.getName() + "/");
} else {
// File name
mitem.add(file.getName());
}
}
}
fileList = new FileManagerAdapter(this, mitem, mpath);
listview.setAdapter(fileList);
listview.setOnItemClickListener(onitemclick);
}
我使用以下代码对文件进行排序,其中类型也进行了排序:
public class FileManagerAdapter extends ArrayAdapter<String> {
private List<String> mitem;
private Context mContext;
public FileManagerAdapter(Context context, List<String> item,
List<String> path) {
super(context, R.layout.fileadapter_list, item);
this.mContext = context;
this.mitem = item;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater mInflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.fileadapter_list, null);
}
TextView txtTitle = (TextView) convertView.findViewById(R.id.txt);
txtTitle.setText(mitem.get(position));
return convertView;
}
}
其中FileList是文件的数组列表。使用这种方法
List tempFilesList=>存储所有文件名。
List tempDirectoriesList=>存储所有目录名。
List FinalList=>添加临时目录列表,然后将临时文件列表添加到此FinalList
我想我不必告诉您如何将tempFilesList和tempDirectoriesList添加到FinalList。到目前为止,您是否面临过任何挑战?是的,文件和文件夹都是混合的。我希望它是在一个有序的方式@KishorJoshif下面这个链接你能再解释一下吗。。因为我使用的是custom adapter.mitem.addAllmitem\u文件夹;mitem.addAllmitem_文件;然后我将适配器设置为使用mitem,但文件和文件夹仍然是混合的。
protected void sortByNmDes(){
fAdapter = new FolderAdapter(getActivity(), R.layout.file_row, FileList);
fAdapter.sort(new Comparator<File>() {
@Override
public int compare(File lhs, File rhs) {
// TODO Auto-generated method stub
if(lhs.isDirectory() && !rhs.isDirectory()){
return -1;
}else if(!lhs.isDirectory() && rhs.isDirectory()){
return 1;
}
return rhs.getName().toLowerCase().compareTo(lhs.getName().toLowerCase());
}
});
setListAdapter(fAdapter);
}