2015-06-01 91 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

更新: 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是文件的數組列表。

+0

可以解釋更多..因爲我使用自定義適配器。 –

+0

顯示您的自定義適配器。 – Riser

+0

我已更新我的問題請看看。 –

0

使用此方法 列表tempFilesList =>存儲所有文件名。 列出tempDirectoriesList =>存儲所有目錄名稱。 列出FinalList =>添加tempDirectoriesList,然後將tempFilesList添加到此FinalList中。

我想我不需要告訴如何將tempFilesList和tempDirectoriesList添加到FinalList。

+0

mitem.addAll(mitem_folders); mitem.addAll(mitem_files);那麼我已經將適配器設置爲使用mitem,但是仍然將文件和文件夾混合在一起。 –