2012-03-28 331 views
0

我有一個bean類等按日期排序

public class ItemBean{ 
    String item_id, item_title, image_url, link_url, description, publish_date, 
     in_app_date, sub_section_id, type, duration, orig_url, sync; 
    public ItemBean() { .... } 
    .... 
    .... 
} 
現在

在活性的具有日期豆構件的陣列,我得到itemBeans的值,使列表; 用於比較器。你可以看到我的代碼;

public void sortDate() { 
    List<ItemBean> listIB = new ArrayList<ItemBean>(); 
    for(int i=0; i<DispLibActivity.itemListVect.size(); i++) 
    { 
     listIB.add(DispLibActivity.itemListVect.get(i)); 
    } 
    //  Sorting Call 
    Collections.sort(listIB, ItemSimpleListActivity.compareDate); 
    itemBeans = new ItemBean[listIB.size()]; 
    for (int i=0; i<listIB.size(); i++) 
    { 
     itemBeans[i] = listIB.get(i); 
     System.out.println("Date: "+itemBeans[i].publish_date); 
    } 
} 

我比較

public static Comparator<ItemBean> compareDate = new Comparator<ItemBean>() { 
    public int compare(ItemBean one, ItemBean other) { 
     return one.publish_date.compareTo(other.publish_date); 
    } 
} 

但是,我得到分類收集如下: - 日期:2009年1月1日08:00:00 CST 日期:2011年10月1日08 :00:00 CST Date:10-1-2011 08:00:00 CST Date:12-2-2010 08:00:00 CST Date:4-1-2009 08:00:00 CST Date: 4-18-2011 08:00:00 CST 日期:4-6-2010 08:00:00 CST 日期:4-6-2010 08:00:00 CST Date:9-20-2011 08:00:00 CST Date:9-20-2011 08:00:00 CST Date:9-20-2011 08:00:00 CST

這是不正確的排序順序。

任何人都可以告訴我替代方法或這個代碼的錯誤是什麼?

回答

1

您必須比較日期而不是字符串(publish_date)。所以在方法比較()你解析字符串日期到一個Date對象(例如通過SimpleDateFormat),並通過Date.compareTo比較這兩個日期

+0

非常感謝「207」, 它的工作原理,你也學會了我SimpleDateFormat – 2012-03-28 17:46:04

+0

你受歡迎的。小建議:您也可以通過ItemBean類實現Comparable 。然後你重寫compareTo()方法,然後你可以調用Collections.sort(yourList)。所以你的代碼更「乾淨」,因爲比較不是你Activity的一部分(public static Comperator ..) – 207 2012-03-28 17:57:43