Jaison Joseph
Jaison Joseph

Reputation: 133

how to retrieve data from fire base and assign to a string

I have a database in fire-base. In that I have a child node named "item1", under item1 i have two values

  1. name
  2. prize

I want to retrieve the name of item1 and I want to put it in a string called "foodname". How can I do that?

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference("menu");

Here I tried but did not find solution

String foodname; //this string should get the value as "diary milk"
mDatabase.addValueEventListener(new ValueEventListener() {
     @Override
     public void onDataChange(DataSnapshot dataSnapshot) {
     }

     @Override
     public void onCancelled(DatabaseError databaseError) {
     }
 });

image of database

Upvotes: 1

Views: 2179

Answers (3)

PradyumanDixit
PradyumanDixit

Reputation: 2375

Retrieving any data from Firebase requires a correct database reference and eventListeners that can work for what you want.

To know more about eventListeners visit this link.

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("menu").child("item1");

        ref.addListenerForSingleValueEvent(new ValueEventListener() {
              @Override
              public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
// this code will get only details from item1
                   foodname = dataSnapshot.child("name").getValue(String.class);
                   String price = dataSnapshot.child("prize").getValue(Integer.class);

//if you want details from multiple items, you have to loop over the child nodes like this

                   for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                       foodname = snapshot.child("name").getValue().toString();
                       String price = snapshot.child("prize").getValue().toString();        
                   }

              }
              @Override
              public void onCancelled(@NonNull DatabaseError databaseError) {

              }
        });

Upvotes: 0

Janwilx72
Janwilx72

Reputation: 506

    DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();

    mDatabase.child("menu").addValueEventListener(new ValueEventListener() {
     @Override
     public void onDataChange(DataSnapshot dataSnapshot) {

         //This will loop through all items. Add variables to arrays or lists as required
         for (DatasnapShot snap : dataSnapshot.getChildren())
         {
             foodname = dataSnapshot.child("name").getValue().toString();
             String prize = dataSnapshot.child("prize").getValue().toString();
         }


     }

     @Override
     public void onCancelled(DatabaseError databaseError) {
     }
 });

You can fetch each child individually like such. Or you can make use of a Model or a Hashmap to fetch all of the data and then fetch the data you would like based on the Key

Upvotes: 3

Ali Ahmed
Ali Ahmed

Reputation: 2178

Using below code you can get food name

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference("menu");

  mDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
     @Override
     public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                   String foodName = snapshot.child("name").getValue().toString();
                   String foodPrice = snapshot.child("prize").getValue().toString();        
               }
          }

     @Override
     public void onCancelled(DatabaseError databaseError) {

          }
 });

Upvotes: 1

Related Questions