2017-08-28 92 views
0

Ia正在开发一个应用程序,该应用程序以"yyyy/MM/dd kk:mm:ss"的格式接收datamessagestimestamp。这里是JSON数据格式。通过日期戳记对Firebase数据进行排序

"NOT20170828132901" : 
{ 
      "code" : "Your order status has been updated to Rejected", 
      "date" : "2017/08/28 13:29:01", 
      "title" : "Order update SPB20170825095233542" 
} 

我想排序基于最新时间戳NOTNUMBER。我试着用limitToLast(i),还有limitToFirst(i),但是是静静的。结果是升序。 Iwant将日期戳分类为降序。我也尝试使用startAt(futuredatestamp).endAt(pastdatestamp),但不工作。我想在此排序:

"NOT20170828140827" : { 
      "code" : "Your order status has been updated to Rejected", 
      "date" : "2017/08/28 14:08:27", 
      "title" : "Order update SPB20170825095233542" 
     }, 
     "NOT20170828140436" : { 
      "code" : "Your order status has been updated to Delivered", 
      "date" : "2017/08/28 14:04:36", 
      "title" : "Order update SPB20170825095233542" 
     }, 
     "NOT20170828132901" : { 
      "code" : "Your order status has been updated to Rejected", 
      "date" : "2017/08/28 13:29:01", 
      "title" : "Order update SPB20170825095233542" 
     }, 
     "NOT20170828115852" : { 
      "code" : "Your order status has been updated to Rejected", 
      "date" : "2017/08/28 11:58:52", 
      "title" : "Order update SPB20170825095233542" 
     }, 
     "NOT20170828014147" : { 
      "code" : "Your order status has been updated to IN TRANSIT", 
      "date" : "2017-08-28 01:41:47", 
      "title" : "Order update : SPB20170825095233542" 
     } 

使用过滤器参数时有些困惑。

请帮帮我。在此先感谢

回答

0

保存日期和时间在火力地堡数据库最好的做法,就是用ServerValue.TIMESTAMP像这样把它保存为TIMESTAMP

DatabaseReference ref = FirebaseDatabase.getInstance().getReference(); 
Map map = new HashMap(); 
map.put("time", ServerValue.TIMESTAMP); 
yourRef.child("yourNode").updateChildren(map); 

记住,你保存TIMESTAMP作为Map但你检索它作为long。为了取回数据,我建议你使用这种方法:

public static String getTimeDate(long timeStamp){ 
    try{ 
     DateFormat dateFormat = getDateTimeInstance(); 
     Date netDate = (new Date(timeStamp)); 
     return dateFormat.format(netDate); 
    } catch(Exception e) { 
     return "date"; 
    } 
} 

然后在查询中orderBy()方法将肯定工作。

+0

工作得很好。但数据仅以升序排列。我不得不使用@Nyagaka Enock的以下解决方案来反转回收站数据。 –

2

假设您在Recyclerview中显示来自Firebase的数据,请添加此代码。

mLayoutManager = new LinearLayoutManager(MyActivity.this); 
mLayoutManager.setReverseLayout(true); 
mLayoutManager.setStackFromEnd(true); 

mRecyclerView.setLayoutManager(mLayoutManager); 
mRecyclerView.setAdapter(yourAdapter); 

上面的代码做了什么,它颠倒了recyclerview的内容。

+0

谢谢。工作正常,有时会颠倒视图。但数据没有以非常正确的方式排序。 –

+0

上面的代码在最上面显示最近的更新并且最近显示在最下面的时候可以正常工作 –

相关问题