【问题标题】:How to update list item in firebase using android如何使用android更新firebase中的列表项
【发布时间】:2017-02-11 07:17:18
【问题描述】:

我是 FireBase 的新手。我见过很多这样的问题,但没有得到解决方案。我想知道如何更新列表中的特定项目。例如,如果我有列表为

 "fruits":{
         0:{
            name:"apple"
            colour:"red"
          }
        1:{
           name:"watermelon"
           colour:"green"
          }

现在,如果我想将新项目添加到列表中,我使用了 push(),因为我想再次保存整个列表。它为新项目创建唯一的 id,列表看起来像这样

"fruits":{
        0:{
           name:"apple"
           colour:"red"
          }
        1:{
           name:"watermelon"
           colour:"green"
          }
         KcfiFQZdzkK-TP8ZekZ:{
          name:"Mango"
          colour:"yellow"
         }
      }

现在我想更新 KcfiFQzdzkk* 项目。我如何更新列表中的该项目。请帮忙

【问题讨论】:

  • public DatabaseReference push () 另外:Google Play services 创建对自动生成的子位置的引用。子密钥在客户端生成,并包含服务器时间的估计以用于排序目的。在单个客户端上生成的位置将按照它们创建的顺序进行排序,并将在所有客户端中大致按顺序排序。 Returns A DatabaseReference pointing to the new location

标签: android firebase firebase-realtime-database


【解决方案1】:

如果你想用 KcfiFQZdzkK-TP8ZekZ 键更新项目的颜色,你可以简单地 write the value 使用:

mDatabase.child("fruits/KcfiFQZdzkK-TP8ZekZ/colour").setValue("red");

但更可能的是,您想用 name=mango 更新节点的颜色并且不知道它的键。

在这种情况下,您首先需要query the fruits to find the mango,然后更新其颜色:

mFruits.orderByChild("name").equalTo("Mango").addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot fruitSnapshot: dataSnapshot.getChildren()) {
            fruitSnapshot.getRef().child("colour").setValue("Red");
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // Getting Post failed, log a message
        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
        // ...
    }
});

在第二个 sn-p 中,您会注意到我们必须遍历 onDataChange 中的所有匹配水果,因为可以有多个 name=Mango 的子节点。

【讨论】:

  • 非常感谢弗兰克
猜你喜欢
  • 1970-01-01
  • 2012-04-08
  • 2019-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多