1

I need to get all keys from ReceptIdOne in ArrayList first and next get all keys from ReceotIdTwo in ArrayList. My database has structure:

{
  "Receptes" : {
    "Ingridients" : {
      "IngridientIdOne" : {
        "Carrot" : true,
        "Salt" : true,
        "Apples" : true
      },
      "IngridientIdTwo" : {
        "Strawberries" : true,
        "Sugar" : true,
        "Bananas" : true
      }
    }
  }
}

I try to get with my code:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ingridientsRef = rootRef.child("Receptes").child("Ingridients");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String ingridient = ds.getKey();
            Log.d("TAG", ingridient);
        }
    }

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

But I only get value Ingridients in my Logs. What I do wrong? How can I do what I want?

Felay
  • 221
  • 3
  • 8

1 Answers1

0

If you want the keys inside ReceptIdOne then try the following:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ingridientsRef = rootRef.child("Receptes").child("Ingridients");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    for(DataSnapshot ds : dataSnapshot.getChildren()) {
          Boolean carrot = (Boolean) ds.child("Carrot").getValue();
        //etc
        Log.d("TAG", ingridient);
    }
}

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

Here you loop inside recepIdOne and retrieve the values there.

Peter Haddad
  • 78,874
  • 25
  • 140
  • 134