0

日付を含む多くのリスト項目を含むリストビューがあります。日付が現在の日付より後のアイテムが最初になり、日付が期限切れになったアイテムがその後になるように、アイテムを日付で並べ替えたい。誰でも助けることができます。

4

2 に答える 2

13

そのような独自のコンパレータを使用できます

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());
  }
});
于 2013-10-24T08:28:03.997 に答える
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();        
}
于 2013-10-24T09:07:46.273 に答える