2016-09-30 36 views
4

我的問題可能是一個愚蠢的問題,我讀過文檔,但沒有解決我的問題。當我使用limitToLast獲取最後15條消息(讓我們從5-20開始說),並且如果我刪除了第20條消息,childListener會返回像我這樣的消息(5-6-7-8-9-10-11-12- 13-14-15-16-17-18-19-4)...正如你所看到的最後一個項目是數字4. 代碼是這樣的:
messagesListener = FBMessagesRef.limitToLast(15).addChildEventListener(new ChildEventListener(),我該如何解決它,並沒有得到第4項Firebase limitToLast Query

+0

如果當前的答案對您沒有幫助,請編輯您的問題以包含[重現問題的最小代碼](http://stackoverflow.com/help/mcve)。現在我們無法知道您的ChildEventListener是如何實現的,這可能是問題的一部分。 –

+0

我有同樣的問題。有沒有解決辦法? – starrystar

回答

0

因爲你得到的最後15位數字,當你設置值更改爲15,將limitToLast值更改爲-1以獲取上一個Firebase值。 將您的代碼更改爲下面的代碼片段。

messagesListener = FBMessagesRef.limitToLast(-1).addChildEventListener(new ChildEventListener(), 
0

Firebase官方文檔說,如果限制值小於數據庫中的項目數,則它將讀取數據庫中的所有項目。很明顯,我猜。

limitToLast(極限)返回firebase.database.Query

生成限於 孩子的最後一個特定編號的新Query對象。

limitToLast()方法用於設置要爲給定回調同步的最大子女數 。如果我們設置了100的限制,我們將 最初只接收最多100個child_added事件。 如果我們有更少的 比我們的數據庫中存儲的100條消息,child_added事件將爲每條消息觸發 但是,如果我們有超過100條消息,我們將 只接收最後100條訂購消息的child_added事件。作爲 事項發生變化,我們會在收到child_removed事件爲 滴出活動列表的每個項目,使總人數保持在100

+0

所以我怎樣才能避免這種行爲,所以它不會混淆消息的順序? – Andrea

+0

您可以創建整個項目的數組列表,並對數組進行操作。作爲childeventlistener的官方firebase數組示例,請參閱https://github.com/firebase/FirebaseUI-Android/blob/master/database/src/main/java/com/firebase/ui/database/FirebaseArray.java。 – uguboz