2016-09-17 134 views
0

爲了在我火力地堡Android應用原子數據操作,我使用的updateChildren(Map<String, Object> update)方法來設置多個值用一個命令(這樣可以防止數據不一致。在DatabaseReference.updateChildren()調用中設置優先級?

在某些情況下,在寫入數據我還需要設置優先順序以便索引元素排序正確

使用'not atomic'setValue(Object value, Object priority)操作,可以寫入一個值並同時設置優先級,使用updateChildren()命令不允許設置優先級

爲了設置p新創建的數據的衝突,我目前在updateChildren()命令的CompletionListener中調用setPriority()。這可行,但會導致奇怪的用戶界面行爲(元素被添加到列表底部,並在此之後,他們移動到正確的位置)。

建議如何正確處理這個問題?

回答

1

如果你正在尋找包括中updateChildren呼叫的優先級,可以通過具有在.priority結束的關鍵這樣做:

map.put("path/to/child/.priority", 42); 

雖然在一般,沒有理由仍然使用優先級。請參閱What does priority mean in Firebase?

+0

嗨,弗蘭克,感謝您的快速反應,我已將問題擴展到更多細節。請看一看。 – Peter

+0

我發佈的代碼顯示瞭如何在'updateChildren()'調用中更新項目的優先級。儘管我可以進一步用'orderByValue()'或'orderByChild()'替代優先級,這可能是一個單獨的問題。在那裏:發佈完整的信息,因爲你現在的詢問方式很難超出我已經完成的工作。提供您想要加載或操作的最小JSON(如文本,而不是屏幕截圖)以及如何加載或操縱它的代碼片段。 –

+0

我已經創建了一個專用於此主題的新問題:[如何在FirebaseRecyclerAdapter中使用orderByChild或orderByValue](http://stackoverflow.com/questions/39561612/how-to-use-orderbychild-or-orderbyvalue-in- A-firebaserecycleradapter) – Peter