gpt4 book ai didi

android - Firebase updatechildren 与 setvalue

转载 作者:行者123 更新时间:2023-11-29 17:21:59 26 4
gpt4 key购买 nike

我在 Firebase 上遇到 valueEvenListener 问题。考虑这种情况:

Firebase ref = new Firebase(Constant.BASEURL).child("myLists");
ref.addValueEventListener(myValueEventListener);

然后我尝试使用 updateChildren() 更新其中一个列表值。

HashMap<String, Object> newEditionTimeHM = new HasMap<String, Object>
newEditionTimeHM.put("editionTimeStamp", ServerValue.TIMESTAMP);

ref.child(pushKey).updateChildren(newEditionTimeHM);

它会更新,但是当我的监听器捕获到更新时,它会崩溃并报告“无法弹回类型”错误。

第二次尝试时,我使用我想要的新值创建了一个新的 shoppinList 对象,并使用 setValue() 推送它。

newEditionTimeHM.put("editionTimeStamp", ServerValue.TIMESTAMP);
ShoppingList shoppingList = new ShoppingList("Owner unknown", newEditionTimeHM);

ref.child(pushKey).setValue(shoppingList);

当我的听众听到它时,没有报告任何问题。

这里有什么区别?为什么我需要创建一个全新的对象来满足听众?使用updateChildren()不是更高效吗?已搜索 this page寻找答案但没有找到。

最佳答案

ServerValue.TIMESTAMP类型是 Map<String, String> ,所以如果你的 pushKey 是 "<your Firebase URL>/myLists",我猜你在 Firebase 中的数据结构与此相关:

"myLists": {
"editionTimeStamp": {
"timeStampKey": "timeStampValue"
}
}

所以,如果你想得到 TIMESTAMP值,我建议您的第一次尝试必须是:

ref.child("<your Firebase URL>/myLists/editionTimeStamp/timeStampKey");
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
String timeStampValue = (String)snapshot.getValue();
}
@Override
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});

如果这不是您的解决方案,这里有一个关于此错误的很好的解释:Why do I get "Failed to bounce to type" when I turn JSON from Firebase into Java objects?
希望对你有帮助:D

关于android - Firebase updatechildren 与 setvalue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36223373/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com