对arraylist进行排序以按日期显示项目

时间:2017-07-12 14:08:49

标签: android arraylist

我正在开发一个由以下内容组成的新闻应用程序:

标题,说明,时间,日期

日期格式为:12/7/2017

当我添加倍数新闻时,它们会在recyclerview上随机显示。

使用Comparator对象按日期排序arraylist的最佳方法是什么,所以当我添加新闻时,它必须显示在recyclerview top。

这是我的工作代码:

 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的顶部。

这是当前情况的简单截图:

enter image description here

2 个答案:

答案 0 :(得分:1)

通过拆分字符串来提取年,月和日:

String[] parts = date.split("/");

转换为整数然后比较年,月和日。

应该有效。

(如果您可以使用SimpleDateFormat解析,Vucko答案会更好)

答案 1 :(得分:1)

您可以将String转换为Date,就像Vucko建议的那样,或者您可以将日期转换为ISO 8601格式并按字母顺序对其进行排序。

ISO 8601看起来像YYYY-mm-dd所以按字母顺序排序这些字符串将按年,月和日排序,这有效地按时间顺序对字符串进行排序。

isodate = date.subString(5) + date.subString(0,2) + date.substring(3,4) 这将为您留下一个带有1或2个数字(7对17)的日期边缘情况,但这有望鼓励您使用更好的日期格式。您可以了解如何对ArrayList Sorting a collection of objects

进行排序