2017-09-26 4 views
0

enter image description hereFirebaseは、子の子の参照を取得

あなたは、各ポストは異なるIdを(投稿したユーザーID)を持って見ての通り、私はこの子の参照を取得しようとしているfx3RqooRMOVRaQHGas4OWQnFK593例えば、データベースの参照は次のようになりますので:

DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().child("Posts").child("fx3RqooRMOVRaQHGas4OWQnFK593"); 

しかし、私が欲しいのは、各ポストIDに対して動的に参照を取得することです。これを実現するために

+0

あなたもFirbaseAuthを使用していると仮定すると、それらを呼び出す()。GETCURRENTUSER()。GETUIDを( ) – gonephishing

+0

FirebaseRecyclerAdapterを使用してすべての投稿を表示しようとしていますが、これは参照を取り、すべての投稿を表示します –

答えて

0

2つのオプションがあります。

  1. あなたが1つの投稿をダウンロードしたい場合は、あなたのカスタムpostIdを使用する必要があります。 pushId()は使用できません。あなたがダウンロードして表示したい投稿を知ることができます。カスタムID

    FirebaseDatabase.getInstance().getReference().child("Posts") 
         .addValueEventListener(new ValueEventListener() { 
          @Override 
          public void onDataChange(DataSnapshot dataSnapshot) { 
            HashMap<String, Object> post = (HashMap<String, Object>) dataSnapshot.getValue(); 
            total= post.size(); 
    
           } 
         } 
    

    を行い、その後、uはする必要があるため、単純にポストノードからすべてのポストをダウンロードカスタムID

    FirebaseDatabase.getInstance().getReference().child("Posts").child("post"+total).setValue(YourValue); 
    

    オプション2.

    を作成する方法

。 。

FirebaseDatabase.getInstance().getReference().child("Posts") 
     .addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
        for (DataSnapshot snapshot : dataSnapshot.getChildren()){ 
         //here is your every post 
         String key = snapshot.getKey(); 
         Object value = snapshot.getValue(); 
        } 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 

ボーナス あなたが特定のユーザーの投稿を表示したい場合。 (私はそれを前提としています) ユーザオブジェクトの中にプッシュキーを文字列のarrylistに格納することができます。その後、ちょうどあなたが動的にFirebaseAuth.getInstanceを使用してユーザーIDを取得することができ、一つ一つ... :)コーディング

幸せ:)

0

、次のコードを使用してください:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference postsRef = rootRef.child("Posts"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for(DataSnapshot ds : dataSnapshot.getChildren()) { 
      String key = ds.getKey(); 
      Log.d("TAG", key); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
postsRef.addListenerForSingleValueEvent(eventListener); 

を出力は、すべてのそれらの鍵となります。

+0

FirebaseRecyclerAdapterは4つのパラメータをとります。それをDatabaseReference変数に格納して使用します。 –

+0

だから、自由にしてください。上記のコードは、Firbeaseデータベースを照会して目的のキーを取得する方法を正確に示しています。 –

0
FirebaseDatabase.getInstance() 
      .getReference() 
      .child("Posts") 
      .addListenerForSingleValueEvent(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 


         for (DataSnapshot snapshot : dataSnapshot.getChildren()){ 
          String key = snapshot.getKey(); // key here 
          Object value = snapshot.getValue(); // value here 
         } 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 

       } 
      }); 
関連する問題