2017-01-21 7 views
1

私はデータベース内の同じ参照の下にいくつかのデータを持っており、それをArrayList<String>に格納しようとしています。参照mDatabase.child("child").child(uid)...はそれに保存されている2つのキーを持っており、それらがids一つずつ、このように格納なっているFirebaseから取得したデータをArrayList <String>にまとめて保存するには?

mDatabase.child("child").child(uid).addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 

      if (dataSnapshot.getValue() != null){ 
       ids.add(dataSnapshot.getValue().toString()); 
       Log.d("ids", ids.toString()); 
      } else { 
       Toast.makeText(getBaseContext(), "No data!", Toast.LENGTH_SHORT).show(); 
      } 

     } 
     ... 
     ... 
    }); 

D/ids: [-Kayr_ENTy4QZQKn3Bgx] 
D/ids: [-Kayr_ENTy4QZQKn3Bgx, -KaywN_5pTOrB0ooBIC3] 

私はしたいもの

はここに方法ですは、一度にidsに追加する方法です。

UPDATE 1: -

データ構造は、このような種類のものである:cartantによって示唆されるように、このように得られている

-app 
    -child 
    -uid 
     -1484967071: -Kayr_ENTy4QZQKn3Bgx 
     -1484967222: -KaywN_5pTOrB0ooBIC3 

valueEventListener()を使用して、検索されたばかり:

D/ids: [{1484967222=-KaywN_5pTOrB0ooBIC3, 1484967071=-Kayr_ENTy4QZQKn3Bgx}] 

私は鍵が欲しいですが、-KaywN_5pTOrB0ooBIC3とです。

+1

あなたは、あなたの例では値を指しているとします。上記のデータ構造では、キーは1484967071と1484967222のようで、値は "-Kayr_ENTy4QZQKn3Bgx"と "-KaywN_5pTOrB0ooBIC3"です。キーや値が本当に必要ですか? –

+0

@DougStevenson by keys by私は文字列 '-KaywN_5pTOrB0ooBIC3'を意味し、この' -Kayr_ENTy4QZQKn3Bgx'は 'key:value'ペアのキーではありません。混乱させて申し訳ありません。 –

+0

私は与えられた答えはあなたのために働くべきだと思います。 onDataChange()に渡されたスナップショットではなく、反復子スナップショットの値を取得していることを確認してください。 –

答えて

4

スナップショット全体をリスナーに配信する場合は、addValueEventListenerまたはaddListenerForSingleValueEventのいずれかを使用します。

addValueEventListenerを使用すると、リスナーは最初のスナップショットで呼び出され、データベースが変更された場合は再び呼び出されます。

addListenerForSingleValueEventを使用すると、リスナーは最初のスナップショットで1回だけ呼び出されます。

リスナーが受信したスナップショットには、すべての子が含まれます。それらを反復するには、次のようなことをします:

@Override 
public void onDataChange(DataSnapshot snapshot) { 
    ArrayList<String> ids = new ArrayList<String>(); 
    for (DataSnapshot childSnapshot: snapshot.getChildren()) { 
     ids.add(childSnapshot.getValue().toString()); 
    } 
} 
+1

非常に多くのFirebase開発者をサポートしてくれてありがとう! –

+0

ありがとう、カルタント...それは私の問題を解決していませんでしたが、それは私にいくつかのヒントを与えました!あなたと@FrankvanPuffelenの助けも必要です:http://stackoverflow.com/q/41710448/6144372してください:) –

関連する問題