2015-06-01 4 views
-3
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); 
} 

Здесь я добавляю список файлов и папок на какой-то путь к ArrayList, как сортировать все папки сначала и все файлы в последний раз. какой метод сортировки я должен использовать для достижения этого. Заранее спасибо.ArrayList сортировка Android

Update: CustomAdapter

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; 
    } 
} 
+0

Вы сталкиваетесь с каким-либо вызовом, который вы использовали до сих пор? – rogerwar

+0

Да, оба файла и папки смешаны. я хотел, чтобы это было в порядке. @kishorJoshi –

+0

перейдите по этой ссылке http://stackoverflow.com/questions/8243450/sorting-of-files-according-to-file-or-folder – rogerwar

ответ

0

Я использую ниже код для сортировки файлов, в которых также отсортированные тип:

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

где FileList является ArrayList файлов.

+0

можно объяснить немного больше .. потому что я использую пользовательский адаптер. –

+0

показать свой пользовательский адаптер. – Riser

+0

Я обновил свой вопрос, пожалуйста, посмотрите. –

0

использовать этот подход Список tempFilesList => хранить все имена файлов. Список tempDirectoriesList => хранить все имена каталогов. Список FinalList => добавить tempDirectoriesList, затем добавить tempFilesList в этот FinalList.

Мне кажется, мне не нужно рассказывать, как добавить tempFilesList и tempDirectoriesList в FinalList.

+0

mitem.addВсе (mitem_folders); mitem.addAll (mitem_files); то я установил адаптер как с помощью mitem, но все же оба файла и папки смешаны. –

Смежные вопросы