2017-08-28 70 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

上面的代碼在最上面顯示最近的更新並且最近顯示在最下面的時候可以正常工作 –

相關問題