2013-10-24 254 views
0

我有一個列表視圖,其中包含許多列表項目,其中包含日期。我想通過日期對項目進行排序,例如日期在當前日期之後的項目應該是第一個項目,而日期已過期的項目應該在該日期之後。任何人都可以幫忙Android:如何根據日期對列表項目進行排序

+0

您可以通過多種方式實現這一點。你有什麼嘗試?請郵編。 –

+0

很好的答案在這裏:http://stackoverflow.com/questions/5927109/sort-objects-in-arraylist-by-date – Andros

+0

有很多線程存在於Stackoverflow本身。最好先嚐試一下自己。如果您有任何問題,請告訴我們。 –

回答

10

您可以使用自己比較像

Collections.sort(yourList, new Comparator<YourObjectInYourList>() { 
    public int compare(YourObjectInYourList o1, YourObjectInYourList o2) { 
     if (o1.getDate() == null || o2.getDate() == null) 
     return 0; 
     return o1.getDate().compareTo(o2.getDate()); 
    } 
}); 
+0

我應該在哪裏放上面的代碼? –

+0

將它放在任何你想分類清單的地方。 – yilmazburk

+0

例如,您可以用這種方式對列表進行排序,並將列表放入listView適配器。 – yilmazburk

0
List<Date> dateList = new ArrayList<Date>();   
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy",Locale.US);  
try { 
    dateList.add(sdf.parse("01/12/2013")); 
    dateList.add(sdf.parse("02/11/2013")); 
    dateList.add(sdf.parse("03/12/2013")); 
    dateList.add(sdf.parse("04/10/2013")); 
    dateList.add(sdf.parse("05/12/2013")); 
    dateList.add(sdf.parse("06/12/2013"));  
    dateList.add(new Date()); 

    Collections.sort(dateList); 
    Comparator<Date> cmp = new Comparator<Date>() { 

     @Override 
     public int compare(Date o1, Date o2) { 
     if(o1.getTime() > o2.getTime()) return 1; 
     else if(o1.getTime() < o2.getTime()) return -1; 
     else return 0; 
     }    
    }; 

    Collator collator = Collator.getInstance(); 
    List<Date> out_of_date_list = new ArrayList<Date>(); 
    for(Date date : dateList){ 
     System.out.println(">>> date = "+sdf.format(date)); 
     System.out.println(">>> out of date "+cmp.compare(new Date(), date)); 
      if(cmp.compare(date,new Date())<0){ 
       out_of_date_list.add(date); 
      }   
    } 
    System.out.println(">>> print all out of date ");   
    for(Date date : out_of_date_list){ 
     System.out.println(">>> date = "+sdf.format(date));  
    }    
} catch (ParseException e) {// TODO Auto-generated catch block 
    e.printStackTrace();   
} 
相關問題