Android ArrayList排序

Android 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

在这里我添加了一些路径上的文件和文件夹列表到ArrayList,如何首先对所有文件夹进行排序,最后对所有文件进行排序。为了实现这一点,我应该使用什么样的排序技术。提前谢谢

更新:CustomAdapter

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);
     }