2012-03-28 205 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