0

mReference.child(rID).child(userID2)mReference.child(rID).child(userID2)私はchildEventListenerを使って検索したいいくつかの文字列を持っています。これらの文字列が削除され、 'ChildEventListener'のonChildRemovedでのみ可能なので、いくつかの作業をしています。Firebaseの 'ChildEventListener'を使用して最上位/最下位レベルのノードから値を取得する方法は?

は、ここで私がしようとしているものです:

mReference.child(rID).child(userID2).addChildEventListener(new ChildEventListener() { 
      @Override 
      public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
       Log.d("dataHEre", dataSnapshot.getValue().toString()); 
      } 
} 

問題がログアウトされ、私はdataHEreとしてここkeysを使用してデータを取得することができないんだということである:valuesです

D/dataHEre: 28.8419556 
D/dataHEre: 78.779063 
D/dataHEre: 3 
D/dataHEre: Railway Colony 
D/dataHEre: Sleep 
D/dataHEre: 12:36 AM 
D/dataHEre: Superman 

だから、私はここにkeysを使用してChildEventListenerを使用して、さまざまな文字列に取得したデータを割り当てるデータを取得する方法知りたいですか?

答えて

0

私は間違った方法でクエリを実行していると思います。 onChildAddedメソッドは、特定の値(私が想定するuserID2)の各子を取得しています。それが必要な場合は、onValueEventListener()を使用して、変更するたびにuserId2ノードのdataSnapshot全体を取得してください。

データを1回だけ取得する場合は、onSingleValueEventListener()を使用してください。 OnChildEvent()は、それぞれの子を個別に追跡するデータのリストを取得するために使用されます。たとえば、OnChildEventListenermReference.child(rID)に添付すると、各ユーザIDにOnChildAddedが表示されます。たとえば、RecyclerViewまたはListViewをFirebase Dataとともに個別に更新できるようになります。

userId2の参照を更新するだけでよい場合は、その参照にOnValueEventListenerを添付すると、値が変更、削除、または追加されるたびに呼び出されます。

firebaseDatabaseRef.addValueEventListener(new ValueEventListener() { 
    @Override public void onDataChange(DataSnapshot dataSnapshot) { 
     customPOJO customPOJO = dataSnapshot.getValue(YourCustomPOJO.class); 
     customPOJO.getName(); 
     customPOJO.getEmail(); 
     customPOJO.getfavoriteFood(); 
     //and so on.... 

    } 

    @Override public void onCancelled(DatabaseError databaseError) { 

    } 
    }); 
+0

私は...あなたのポイントを持って、私はすでにそれを試してみましたが、私は疑問に述べてきたように、 '私は、これらの文字列が削除されるにもいくつかの作業をやっているようchildEventListenerを使用して取得したい、それが唯一でありますonChildRemoved'で可能です。これは問題です:/ –

+0

私が言っていることは、あなたが削除するときに 'ValueEventListener'を使うと、あなたは新しい項目で' onDataChange'データを受け取り、 'myNewItem.getMyDesiredString()'とあなたが 'String'を削除した場合、その呼び出しはnullを返します。そして、あなたが望むタスクを実行することができます。 –

関連する問題