如何使用 String "Date" 成员对自定义对象的 ListArray 进行排序

How to sort a ListArray of custom object with a String "Date" member

我有一个 "Planning" 的 ListArray。

ArrayList<Planning> tmpListPlanning

这是我的 "Planning Class":

public class Planning {
    private String start;
    private String title;

}

问题是,我 "tmpListPlanning" 收到的元素乱七八糟

我想按照日期对它们进行排序。 日期格式如下:

"2013-12-10 14:00:00"

我在 Whosebug 上看到了这个,但我无法让它在自定义对象列表上工作:

Collections.sort(datestring, new Comparator<String>() {
        DateFormat f = new SimpleDateFormat("dd/MM/yyyy '@'hh:mm a");
        @Override
        public int compare(String o1, String o2) {
            try {
                return f.parse(o1).compareTo(f.parse(o2));
            } catch (ParseException e) {
                throw new IllegalArgumentException(e);
            }
        }
    });

你能帮帮我吗? 谢谢。

编辑 1 :

Collections.sort(tmpListPlanning, new Comparator<Planning>() {
            DateFormat f = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
            @Override
            public int compare(Planningo1, Planning o2) {
                String date1 = o1.getStart();
                String date2 = o2.getStart();
                try {
                    Log.e("Debug", "RETURN");
                    return f.parse(date1).compareTo(f.parse(date2));
                } catch (ParseException e) {
                    Log.e("Debug", "Parse Exception");
                    throw new IllegalArgumentException(e);
                } catch (java.text.ParseException e) {
                    e.printStackTrace();
                }
                return 0;
            }
        });

您使用了一个规划列表,所以您想要比较所有的规划。 您需要一个规划比较器,并且要比较两个规划,您需要使用它们的开始日期。

你可以试试这个:

Collections.sort(datestring, new Comparator<Planning>() {
        DateFormat f = new SimpleDateFormat("dd/MM/yyyy '@'hh:mm a");
        @Override
        public int compare(Planning o1, Planning o2) {
            Date date1 = o1.getStart();
            Date date2 = o2.getStart();
            try {
                return f.parse(date1).compareTo(f.parse(date2));
            } catch (ParseException e) {
                throw new IllegalArgumentException(e);
            }
        }
    });