Reputation: 107
I want to retrieve from firebase database and I already have setup my model to put content in place. I succeeded to retrieve data from one single node but I am unable to do so where I need data from 2 nodes which I want to show it in say Recycler View. However, where I get the success is completely different fragment.
First, I will show you my code for retrieving data from just one node and it is working for me.
Here's the code which is working for one node in different fragment.
Working-Fragment
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();
}
Above Code works perfectly. Now Non-Working Code which doesn't pull anything.
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();
}
This is a snapshot for firebase database Firebase Database Snapshot
I made the question as clear as possible on my end. Thank you all in advance.
Upvotes: 1
Views: 697
Reputation: 138824
To get those values from a specific post, please use the following code:
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);
In which postId
is the id of the post from which you want to extract the data.
Upvotes: 1