按日期排序具有日期成员的bean数组

时间:2012-03-28 17:02:56

标签: android sorting comparator

我正在使用像

这样的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);
    }
}

但是,我正在按如下方式收集排序: - 日期:1-1-2009 08:00:00 CST 日期:10-1-2011 08:00:00 CST 日期:10-1-2011 08:00:00 CST 日期:12-2-2010 08:00:00 CST 日期:4-1-2009 08:00:00 CST 日期:4-18-2011 08:00:00 CST 日期:4-6-2010 08:00:00 CST 日期:4-6-2010 08:00:00 CST 日期:9-20-2011 08:00:00 CST 日期:9-20-2011 08:00:00 CST 日期:9-20-2011 08:00:00 CST

哪种排序顺序不正确。

任何人都可以告诉我其他方法或此代码的错误是什么?

1 个答案:

答案 0 :(得分:1)

您必须比较日期而不是字符串(publish_date)。因此,在方法compare()中,您将字符串日期解析为Date对象(例如,通过SimpleDateFormat),并通过Date.compareTo比较这两个日期