[英]Sort arraylist to display items by date
我正在开发一个新闻应用程序,其中包括:
标题,描述,时间,日期
日期格式为:2017/12/7
当我添加多个新闻时,它们会在recyclerview上随机显示。
使用Comparator对象按日期对arraylist进行排序的最佳方法是什么,因此当我添加新闻时,它必须显示在recyclerview顶部。
这是我的工作代码:
JSONArray array = new JSONArray(response);
JSONObject jsonObject = null;
post_array2.clear();
Simplenews_data p;
for (int i = 0; i < array.length(); i++) {
jsonObject = array.getJSONObject(i);
int id_simplenews = jsonObject.getInt("id_simplenews");
String name_simplenews = jsonObject.getString("name_simplenews");
String image_simplenews = jsonObject.getString("image_simplenews");
String desc_simplenews = jsonObject.getString("desc_simplenews");
String time_simplenews = jsonObject.getString("time_simplenews");
String date_simplenews = jsonObject.getString("date_simplenews");
p = new Simplenews_data();
p.setId_simplenews(id_simplenews);
p.setName_simplenews(name_simplenews);
p.setImage_simplenews(image_simplenews);
p.setDesc_simplenews(desc_simplenews);
p.setTime_simplenews(time_simplenews);
p.setDate_simplenews(date_simplenews);
post_array2.add(p);
如果您必须比较两个整数,我已经搜索并找到了可用于其他问题的代码:
Collections.sort(post_array, new Comparator<Standings_data>(){
public int compare(Standings_data s1, Standings_data s2) {
return s1.getPts().compareToIgnoreCase(s2.getPts());
}
});
但实际上我不知道如何按这种日期格式对它进行排序,因此,当有新闻出现时,它不会随机显示在recyclerview的顶部。
这是当前情况的简单屏幕截图:
通过拆分String提取年,月和日:
String[] parts = date.split("/");
转换为整数,然后比较年,月和日。
应该可以。
(如果您可以使用SimpleDateFormat进行解析,则Vucko的答案会更好)
您可以像Vucko建议的那样将String
转换为Date
,或者可以将日期转换为ISO 8601格式并按字母顺序对其进行排序。
ISO 8601看起来像YYYY-mm-dd,因此按字母顺序对它们进行排序时,字符串将按年,月,日排序,从而有效地按时间顺序对字符串进行了排序。
isodate = date.subString(5) + date.subString(0,2) + date.substring(3,4)
这将为您提供日期边缘情况,其中包含1或2个数字(7对17),但是希望如此鼓励您使用更好的日期格式。 您可以在此处找到如何对ArrayList
排序对对象集合进行排序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.