2014-05-21 150 views
-1

我已經看過其他帖子,但似乎無法在我的文章中很好地說明。有人可以幫助我這個。我能夠查看文件並打開它們,但需要它們從最近的創建列表到最舊的列表。以下是我的代碼。需要根據創建日期對文件進行排序

private List<String> fileList = new ArrayList<String>(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    String root = Environment.getExternalStoragePublicDirectory("/MyAppFolder"). 
      getAbsolutePath(); 
    // ListDir(root); 

    pdf = new File(root); 
    ListDir(pdf); 
    } 

    void ListDir(File f) { 
    File[] files = f.listFiles(); 
    fileList.clear(); 

    for (File file : files) { 



     fileList.add(file.getName()); 

    } 



    ArrayAdapter<String> directoryList = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, fileList); 

    setListAdapter(directoryList); 

    } 

    public void onListItemClick(ListView parent, View v, int position, long id) { 
    //selection.setText(fileList.indexOf(simple_list_item_1)); 
    OpenPdf(fileList.get(position).toString()); 
    } 



    public void OpenPdf(String path) 
    { 
     File file = new File(path); 
     if (file.exists()) { 
      Uri p = Uri.fromFile(file); 
      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setDataAndType(p, "application/pdf"); 
      intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

      try { 
       startActivity(intent); 
      } 
      catch (ActivityNotFoundException e){ 
      } 
     } 
    } 
} 
+0

這種重複是在相關問題清單的第一位。請稍微研究一下。 – njzk2

回答

0

您可以檢出以下question這表明如何做到這一點的最後國防部時間戳。它應該很容易適應你的情況。

這裏最有趣的部分是比較器。

+0

這是我得到的錯誤-----在這條線上的多個標記 \t - 類型列表的方法sort(File [],new Comparator(){})是未定義的 \t - Comparator是一個raw類型。參考通用類型比較器應該是 \t參數化 – Ahsan

+0

您需要編寫自己的比較器。 – B4dT0bi

+0

在這裏,我試過了。不是真的比較好,但是這是我得到..... \t \t fileList.sort(文件,新的比較(){ \t公衆詮釋比較(對象01,對象02){ \t如果( ((File)o1).lastModified()>((File)o2).lastModified()){else {if((File)o1).lastModified()<((File) O2).lastModified()){ \t返回1; \t}否則{ \t返回0; \t} \t} \t}); – Ahsan

0
Comparator<File> fileDateCmp = new Comparator<File>() { 
    public int compare(File f1, File f2) { 
     return Long.compare(f1.lastModified(), f2.lastModified()); 
    } 
}; 


File[] yourArrayOfFiles 
Arrays.sort(yourArrayOfFiles, fileDateCmp); 

比如我校的計算機上:

Comparator<File> fileDateCmp = new Comparator<File>() { 
     public int compare(File f1, File f2) { 
      return Long.compare(f1.lastModified(), f2.lastModified()); 
     } 
    }; 

    File[] yourArrayOfFiles = File.listRoots(); 

    System.out.println(Arrays.toString(yourArrayOfFiles)); 

    Arrays.sort(yourArrayOfFiles, fileDateCmp); 
    System.out.println(Arrays.toString(yourArrayOfFiles)); 
    for(File file : yourArrayOfFiles) { 
     System.out.print(file + ": "); 
     System.out.println(file.lastModified()); 
    } 

輸出:

[C:\, D:\, K:\, M:\, P:\, S:\, U:\, V:\] 
[D:\, V:\, M:\, K:\, P:\, U:\, S:\, C:\] 
D:\: 0 
V:\: 1370008587158 
M:\: 1386966108069 
K:\: 1395062748515 
P:\: 1396364590821 
U:\: 1398716910066 
S:\: 1400518034257 
C:\: 1400684450266 
相關問題