繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM