を取得しますログは、テストのために、ログプリントは次のようにFirebaseデータベースリスナーは、間違った情報
今、私は唯一の1月19日08:44:57.547 17531から17531/com.firebase.android D/PROFILE:ffggg @ gmailcom 01-19 08:44:57.547 17531-17531/com.firebase.android D/PROFILE:test22 @ gmailcom 01-19 08:45:15.446 17531-17531/com.firebase.android D/PROFILE:8o93lpc5clhrsrst852nfm2g75 01 -19 08:45:15.446 17531-17531/com.firebase.android D/PROFILE:a18g2u5h525nqthpqsn6askp75 01-19 08:45:15.448 17531-17531/com.firebase.android D/PROFILE:ffggg @ gmailcom 01-19 08:45:15:49:17531-17531/com.firebase.android D/PROFILE:test22 @ gmailcom 01-19 08:45:15.587 17531-17531/com.firebase.android D/PROFILE:8o93lpc5clhrsrst852nfm2g75 01-19 08: 45:15.587 17531-17531/com.firebase.android D/PROFILE:a18g2u5h525nqthpqsn6askp75 01-19 08:45:15.588 17531-17531/com.firebase.android D/PROFILE:ffggg @ gmailcom 01-19 08:45: 15.588 17531-17531/com.firebase .android D/PROFILE:test22 @ gmailcom
[email protected]
の子供を取得する必要があります(と私は、文字列がnullまたは空でない確認しています)UIDは
[email protected]
であると仮定。しかしここでは、ノードがuIDでない限り、すべてのノードをrefで取得します(しかし、それらの子は返しません)。私は何千ものレコードを何千も持っていれば、不必要なデータをたくさんダウンロードするので、これは欲しくない。
私は何か間違ったことをしていますか、Listbaseはfirebaseによってこのように実装されましたか?
アップデート1
私はアプリの引き出しからアプリケーションを開くと、それは私がしたいノードの正しい子を取得します。しかし、このアクティビティの中の別のアクティビティに行くと、他のクラスでリッスンしているノードに子を追加し、そのノードをリスンしているクラスに戻って、奇妙な出力が得られます。
pullNewImage = myDB.getReference("testNode");
pullNewImage.child(uID).child(randomName).setValue(ServerValue.TIMESTAMP);
アップデート2
私の更新リスナーコード:
//global var
ValueEventListener profileListener = null;
//....
profileListener = ref.child(userEmail).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot singleSnapshot : dataSnapshot.getChildren()){
Log.d("PROFILE", singleSnapshot.getKey());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
//...
@Override
public void onStop() {
super.onStop();
if (mAuthListener != null) {
auth.removeAuthStateListener(mAuthListener);
}
if(profileListener != null)
ref.removeEventListener(profileListener);
}
私はすでにこれを試してみましたが、あなたのコードでそれを無効にし、同期ではありませんもう一度やり直してみてください。それは動作しません。アプリケーションを起動すると、正しいノードの下にある子どもたちが印刷され、私が望むようなものは何も表示されません。そのとき、別のアクティビティからノードに追加すると、上のブロック引用文に記載されている奇妙な出力が得られます – TerribleCoderSad
なぜスレッド内にリスナーがありますか?リスナーはAsyncを実行します。それ以外の理由がなければ削除します。 –
また、変更を待ち受けたいのですか、一度データを取得したいだけですか? –