2017-02-23 8 views
1

私はFirebaseを使って最初のプロジェクトをアンドロイドで構築しています。私は、その子ノードとしてポストとしてメインノードを有するされFirebase's databaseメディアを構築したFirebaseの入れ子ノードからデータを取得する

、メディア・ノードは、特定のポストのために複数の値を含むことができ、またはその中に一つの値を有することができます。

私は特定のポストノードでメディアの子ノードの値を取得したいと思います。

私を助けてください。

ご協力いただければ幸いです。

以下のスクリーンショットを確認してください。

Database image

答えて

0

UIDは、特定のポストノードのキーである。この

FirebaseDatabase.getInstance().getReference("posts").child(UID).child("media");

のようなものを試してみてください。

PS:これは約束のようなものを返します。そのためにリスナーを添付する必要があります。まず

1
Firebase ref = new Firebase(YOUR_FIREBASE_URL); 
      String postNode ="KddShng........"; 
      ref.child("posts/"+postNode).child("media").addChildEventListener(new ChildEventListener() { 
       @Override 
       public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
         Log.e("[email protected]@_Key : >",dataSnapshot.getKey()); // you will get key of Media node 
       } 

       @Override 
       public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

       } 

       @Override 
       public void onChildRemoved(DataSnapshot dataSnapshot) { 

       } 

       @Override 
       public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

       } 

       @Override 
       public void onCancelled(FirebaseError firebaseError) { 

       } 
      }); 
+0

私はポストノードもフェッチしたいと思います。その中にメディアノードリストが必要です。 これは同じですか? –

+0

また、そのノードを展開してください。新しいイメージを入れてください。アイデアを得ることができます。 –

1

(これはリアルタイムであるため)あなたはfirebaseからデータを取得する方法を知ってdocsを読む必要があります。

と別の方法であなたのデータは次のようになります...

final Firebase ref = new Firebase("URL/posts"); 
    ref.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot userSnapshot : dataSnapshot.getChildren()) { 
//u can handle your variables name in GetData class 
       GetData posts = userSnapshot.getValue(GetData.class); 

..

   DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("posts"); 
       String user_id = firebaseAuth.getCurrentUser().getUid(); 
       databaseReference.child(user_id).child("media").getValue("user_id").getValue(etc); 

あなたはどこにでもそれを再利用するStringとして最後の行を保存することがあります。

UPDATE:

、あなたがFirebase adapter使用する必要がありフィッチデータにexample

+0

私は、単一のgetset配列の特定の投稿のデータとメディアの子ノードデータをポストする必要があります。その機能を達成するには? –

+0

あなたは同じか、または実際の例について私にgithubのリンクを送ってくださいできますか? –

+1

更新を確認してください。 – Ibrahim

0

一度だけ値を取得したい場合は、このように行うことができます。

FirebaseDatabase.getInstance().getReference("posts").child("your_post_item_id").child("media").addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

       for (DataSnapshot children : dataSnapshot.getChildren()) { 
        YourMediaModel mediaItem = children.getValue(YourMediaModel.class); 
        //add you mediaItem to list that you provided 
       } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
関連する問題