2017-09-03 1 views
0

を呼び出すことではありません。行うために、私は次のようでした:Firebaseは、次のDBスキームを考えるOnChildChangedイベント

コード中
mDBRefUsers = mDatabase.getReference("https://stackoverflow.com/users/"); 
mDBRefUsers.child("mHotZoneRecord").addChildEventListener(new HotZoneNotification(this)); 

とどこかを、

class HotZoneNotification extends TableSyncInfo 
     implements ChildEventListener { 
     OnChildChanged(); 
     OnChildAdded(); 
} 

HowZoneNotificationクラスを実装する問題は全くOnChildChangedイベントを取得していないイムです。

私は間違っていますか?

+0

'onChildChanged()'は、 '/ users'の下にある既存のノードの1つに変更が加えられた場合にのみ呼び出されます。 –

+0

これらのメソッドを実装していませんか?多分私たちはあなたが 'HotZoneNotification'の実装全体を表示するともっと助けることができます –

+0

これらは実装されていますが、コールバック自体が呼び出されず、mDbLatituteとmdbLongtitudeが変更されるので、私の意見ではこの例では重要ではないと私は考えています。 –

答えて

0

あなたはリスナーをmHotZoneRecord以外のユーザーに設定します。リスナーを設定するには、「-Kt8Y ......」にアクセスする必要があります。これらの変更を行う必要があります。

mDBRefUsers = mDatabase.getReference("https://stackoverflow.com/users/"); 
mDBRefUsers.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
      // dataSnapshot .. hold list of users keys .. now you can hold it to set your listener 
      for(DataSnapshot dataSnapShot1 : dataSnapshot.getChildren()){ 
        mDBRefUsers.child(dataSnapShot1.getValue(String.class)) 
        .child("mHotZoneRecord") 
        .addChildEventListener(new HotZoneNotification(this)); 
        // this equals users.child("-Kt8YIIAEH6EKXIbh3YN").child("mHotZoneRecord").[YOU LINSTER] 

      } 
    } 

あなたがやった間違ったあなたは私がしたので、何この写真enter image description here

のように、ユーザーのブランチ に「mHotZoneRecord」と呼ばれる子がi 'は、ユーザーのブランチに入ったとされていることをデータベースに伝えることです私はすべてのキー "Kt8YIIAEH6EKXIbh3YN - Kt8A ...."を取得し、キーに含まれている "mHotZoneRecord"子にリスナーを設定しました。

+0

答えをありがとう?毎回呼び出される通常のvalueEventではなく、なぜSingleValueEventを使用しますか? –

+0

キーにアクセスするだけで済むので、キーにイベントリスナーを設定する必要はありません。 –

関連する問題