2017-08-28 93 views
1

我想從Firebase數據庫中檢索,並且我已經設置了我的模型來放置內容。我成功地從單個節點檢索數據,但是我無法這樣做,因爲我需要來自2個節點的數據,我想在Recycler View中顯示它。但是,我獲得成功的地方是完全不同的片段。查詢Firebase數據庫並從2個節點中檢索

首先,我將向您展示我的代碼,用於從一個節點檢索數據,它正在爲我工​​作。

下面是在不同片段中的一個節點工作的代碼。

工作片段

private void updateArrayList() {   

    DatabaseReference reference = FirebaseDatabase.getInstance().getReference(); 
    Query query = reference 
      .child(getString(R.string.dbname_posts)) 
      .child(FirebaseAuth.getInstance().getCurrentUser().getUid()); 

    query.addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 

      data.add(dataSnapshot.getValue(Userpost.class)); 
      adapter.notifyDataSetChanged(); 
     } 

上面的代碼完美的作品。 現在非工作代碼不拉什麼東西。

private void updateArrayList() { 

    DatabaseReference reference = FirebaseDatabase.getInstance().getReference(); 
    Query query = reference 
      .child(getString(R.string.dbname_posts)).child("profile_photo") 
      .child(getString(R.string.dbname_user_account_settings)) 
      .child("profile_photo"); 

    query.addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 

      data.add(dataSnapshot.getValue(Userpost.class)); 
      adapter.notifyDataSetChanged(); 
     } 

這是火力數據庫 Firebase Database Snapshot

快照我做了儘可能清晰的在我結束的問題。 謝謝大家提前。

回答

1

要想從一個特定崗位的價值,請使用如下代碼:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference postIdRef = rootRef.child("posts").child(postId); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     String pheading = dataSnapshot.child("pheading").getValue(String.class); 
     String user_id = dataSnapshot.child("user_id").getValue(String.class); 
     Log.d("TAG", pheading + "/" + user_id); 

     DatabaseReference ref = rootRef.child("user_account_settings").child(user_id); 
     ValueEventListener valueEventListener = new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot ds) { 
       String profile_photo = ds.child("profile_photo").getValue(String.class); 
       Log.d("TAG", profile_photo); 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) {} 
     }; 
     ref.addListenerForSingleValueEvent(valueEventListener); 
    } 

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

在這postId是要從中提取數據的帖子的ID。

+0

謝謝,正如我所提到的,我還想從另一個節點「user_account_settings」上的「posts」節點下的(user_id)子節點同時檢索數據。請看看我在問題中添加的屏幕截圖。 PS。感謝您的幫助我 – esarje

+0

請看我更新的答案。 –