2017-07-12 152 views
-1

我正在开发它由一个新闻应用程序来显示项目:数组列表排序按日期

标题,描述,时间,日期

的日期格式为:2017年12月7日

当我添加多重新闻时,他们随机显示在recyclerview上。

什么是使用比较对象按日期排序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); 

我已搜查,发现这个代码,如果u有比较两个整数,对于其他问题的工作原理:

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

使用SimpleDateFormat.parse()从字符串中创建Date对象,然后使用date的compareTo方法。 – Vucko

+0

请您发布一些代码 –

+0

我不会。你可以只为谷歌我所说的,并轻松找到答案。但你宁愿让别人为你做所有事情。为此,还有一些网站,但您通常需要付费。干杯。 – Vucko

回答

1

提取年,月,日的劈裂你的字符串:

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

转换成整数,然后比较年,月和一天。

是否应有效。

(Vucko答案是更好,如果你可以用SimpleDateFormat的解析)

+0

如果我这样做,我怎样才能让recyclerview显示了比较日期的项目? –

+0

那么,RecyclerView显示在同一顺序上较ArrayList的项目。所以在显示ArrayList之前排序ArrayList,或者在ArrayList排序后调用notifyDataSetChanged函数。 – Sigma

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

+0

请给我看一些代码 –

+0

我已经发布了一些代码 –