2017-02-11 15 views
2

FireBaseを初めて使用しています。そして私はこのような多くの質問を見たが、解決策を得られなかった。私はどのようにリスト内の特定のアイテムを更新できるのか知りたい。たとえば、私は今、私はくぼみが再び全体のリストを保存したかったので、()私はプッシュを使用リストに新しい項目を追加したい場合はandroidを使用してFirebaseのリストアイテムを更新する方法

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

としてリストを持っている場合。それは、新しいアイテムに固有のIDを作成し、リストには

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

は今、私はKcfiFQzdzkk *の項目を更新したい、このようになります。リスト内のそのアイテムをどのように更新できますか?あなたは、キーKcfiFQZdzkK-TP8ZekZでアイテムの色を更新したい場合は、

+0

public DatabaseReference push() Google Playサービス 自動生成された子位置への参照を作成します。子キーはクライアント側で生成され、ソートの目的でサーバーの時間の見積もりが組み込まれています。単一のクライアント上で生成されたロケーションは、作成された順にソートされ、すべてのクライアントにわたってほぼ順番にソートされます。 戻り値 新しい場所を指すデータベース参照 ' –

答えて

2

を助けてくださいすることができます単にwrite the valueと:

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

しかし、それはあなたが名前を持つノードの色を更新することがより可能性があります=マンゴーとその鍵を知らない。その色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()); 
     // ... 
    } 
}); 

この第二のスニペットでは、複数存在することができるので、onDataChangeに一致するすべての果物の上に私たちはループを持っていることに気づくでしょう名前=マンゴの子ノード。

+0

ありがとうございましたFrank – FaisalAhmed

関連する問題