I need to get the value of another child in my Firebase database inside addChildEventListener
but addValueEventListener
won't get triggered. Meaning that user_name_list
will always be empty. How Can I solve this issue? Thanks!
mDatabase.child("all_ads").child("companies").child(company_id).child("ads").child(ad_id).child("chat").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, String s) {
mess_list = new ArrayList<>();
chat_id_list = new ArrayList<>();
user_name_list = new ArrayList<>();
for (DataSnapshot uniqueKey : dataSnapshot.getChildren()) {
chat_id_list.add(String.valueOf(uniqueKey.getKey()));
mess_list.add(String.valueOf(uniqueKey.getValue()));
mDatabase2 = FirebaseDatabase.getInstance().getReference();
mDatabase2.child("usersacc").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot2) {
user_name_list.add(String.valueOf(dataSnapshot2.child(String.valueOf(uniqueKey.getKey())).child("username").getValue()));
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
list_fonct(mess_list, chat_id_list, user_name_list);
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
This is the structure of my database.
{
"all_ads" : {
"companies" : {
"VchGVZITqVVJMAcrI8bJ1WLxPdq2" : {
"ads" : {
"1_ad" : {
"chat" : [ null, {
"TWTlzga3jEfkIy5euZ5lyBo9YHL2" : "Hi!"
}, {
"TWTlzga3jEfkIy5euZ5lyBo9YHL2" : "hello"
}, {
"gG0DoRAAFqUkWk8KZWKLb96yHXX2" : "a"
}, {
"gG0DoRAAFqUkWk8KZWKLb96yHXX2" : "b"
}, {
"gG0DoRAAFqUkWk8KZWKLb96yHXX2" : "c"
} ]
}
}
}
}
},
"usersacc" : {
"TWTlzga3jEfkIy5euZ5lyBo9YHL2" : {
"username" : "username1"
},
"gG0DoRAAFqUkWk8KZWKLb96yHXX2" : {
"username" : "username2"
}
}
}