2016-06-16 7 views
2

私はAndroidのデータベースからすべてのデータを取得するためにOnChildAddedイベントを使用しています。FireBase OnChildAddedがAndroidで呼び出されていない

初回とはじめて、うまく動作します。 しかし、何か、onChildAddedはもう古い子を呼び出すことはありません。 アプリをアンインストールしてもう一度インストールすると、再び機能します。

権限と追加されたイベントを確認しました。 私は何が間違っているのか、それを修正するために何をしなければならないのか分かりません。

このコードは、私はその後、私はここに

Log.i(TAG, "Add Child Event Listener"); 
    prayersRef.addChildEventListener(prayersListener); 
+0

コードを投稿できますか? – Pietu1998

+0

編集済み.... –

+1

リスナーをどこに追加していますか?ライフサイクルの方法は? – Skye

答えて

0

OnChildAddedイベントがデータをリフレッシュするために使用されるにイベントを追加するのinit

prayersRef = database.child("prayers"); 

    Log.w(TAG, "FireBaseDatabaseManager"); 

    prayersListener = new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) { 
      Prayer prayer = dataSnapshot.getValue(Prayer.class); 
      prayer.uid = dataSnapshot.getKey(); 
      Log.w(TAG, "onChildAdded:" + prayer.uid); 

      if (delegate != null) { 
       delegate.OnPrayerAdded(prayer); 
      } 
     } 

     @Override 
     public void onChildChanged(DataSnapshot dataSnapshot, String previousChildName) { 
      Log.w(TAG, "onChildChanged:" + dataSnapshot.getKey()); 
     } 

     @Override 
     public void onChildRemoved(DataSnapshot dataSnapshot) { 
      Log.w(TAG, "onChildRemoved:" + dataSnapshot.getKey()); 
     } 

     @Override 
     public void onChildMoved(DataSnapshot dataSnapshot, String previousChildName) { 
      Log.w(TAG, "onChildMoved:" + dataSnapshot.getKey()); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      Log.w(TAG, "onCancelled", databaseError.toException()); 
     } 
    }; 

のために使用します。 ListenerForSingleValueEventを使用してデータを取得しようとすると:) onDataChangeでダウンロードしたすべてのアイテムをリストに入れることができます:)

@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 
    List<Model> models = new ArrayList<>(); 
    for(DataSnapshot snapshot : dataSnapshot.getChildren()) { 
     Model model = snapshot.getValue(Model.class); 
     models.add(model); 
    }  
} 
+1

'ChildEventListener'を追加すると、' onChildAdded() 'が既存の子ごとに呼び出され、その後に新しい子が追加されるたびに呼び出されます。 –

関連する問題