我想按日期降序排列日期。这是我在片段中使用的代码 -
int pos = adapter.contains(status.id);
if (pos == -1) {
myobj = new MyAdapter.Mymyobj();
myobj.status = status;
adapter.addItem(myobj);
} else {
myobj = adapter.getItem(pos);
myobj.status = status;
}
convertStringToDate(myobj.status.getTimeInString());
sortDates.add(convertedDate);
Comparator<Date> cmp = Collections.reverseOrder(null);
Collections.sort(sortDates, cmp);
adapter.notifyDataSetChanged();
private Date convertStringToDate(final String dateString) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM. HH:mm");
try {
convertedDate = dateFormat.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
return convertedDate;
}
以上代码无效。实际上什么也没发生。我希望列表按降序排列。 我也应该在适配器中做些什么吗?
答案 0 :(得分:1)
看看这个tutorial。它向您展示了如何使用Collections.reverseOrder()
比较器。基本上,你说错了。你应该使用:
Collections.sort(sortDates, Collections.reverseOrder());
请注意,我没有在此处传递null
作为参数。
答案 1 :(得分:0)
您给出的代码不完整或者编译错误导致无法回答。
但是,首先,我必须问为什么你认为有必要将日期转换为字符串只是为了对它们进行排序,而标准的Date类已经实现了Comparable?
另一方面,你的convertDateToString()方法捕获DateParseException并在没有用户看到它们的地方打印它们,并继续进行,好像什么都没发生,这可能会在代码中导致NPE。