2017-06-09 13 views
0

子供が自分のfirebaseに追加されると、FirebaseのすべてのAnnotation_Cityが再度ログに記録されます。追加された新しいAnnotation_Cityだけを印刷するにはどうすればよいですか?addValueEventListenerを使って新しいアイテムを取得する方法

public void AllLocationMarkers() { 
     grabMarkersFromDb = new Firebase("***"); 
     grabMarkersFromDb.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       for (DataSnapshot locationSnapshot : dataSnapshot.getChildren()) { 
        String city_Name = (String) locationSnapshot.child("Annotation_City").getValue(); 
        Log.d("City updated", "city: " + city_Name); 
       } 
      } 

      @Override 
      public void onCancelled(FirebaseError firebaseError) { 

      } 
     }); 
    } 
+0

**は、どのように私はそれだけであなたが今に到達するために何をしたいあなたはすでにそれを得た**追加しまった新しいAnnotation_Cityを、印刷するには得ることができますか? – Ibrahim

+0

応答ありがとう:)。しかし、私はまだそれを持っていない、例えば。私はFirebaseの名前に1つの都市名があるとしましょう:West Covina。そして私は私のプログラムを実行して、 "West Covina"を記録します。だから私は私のアプリにとどまって、それをまったく残してはいけないと私は先に進んで "Pomona"と呼ばれる別の都市名を追加すると私のプログラムは "West Covina"と "Pomona"を記録するだろうが、それは新しく、West Covinaは古いデータです –

+1

Firebaseはデータを同期させたので、 "新しいデータのみ"という概念はありません。しかし、データに時間の兆候がある場合は、特定の時点以降にデータを照会することができます。 https://stackoverflow.com/questions/24713765/firebase-android-notifications-childadded-how-to-get-only-new-childsを参照してください。 –

答えて

0
grabMarkersFromDb.addChildEventListener(new ChildEventListener() { 
          @Override 
          public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
           //value add then it will call 
          } 

          @Override 
          public void onChildChanged(DataSnapshot dataSnapshot, String s) { 
          //value change 
          } 

          @Override 
          public void onChildRemoved(DataSnapshot dataSnapshot) { 
           // value remove 
          } 

          @Override 
          public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

          } 

          @Override 
          public void onCancelled(DatabaseError databaseError) { 

          } 
         }); 

それをaddChildEventListenerを使用しています。それは一つ一つの価値になります。値がaddの場合、そのメソッドonChildAddedが呼び出されます。

read full documentation here.

関連する問題