akhil kumar
akhil kumar

Reputation: 11

How to fetch data from firebase :

I want to fetch dates field but the code below is not doing so. the Toast is showing null (value of String date).

this is my database

public String date;

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState){
    DatabaseReference rootRef , demoRef;
    //database reference pointing to root of database
    rootRef = FirebaseDatabase.getInstance().getReference();
    //database reference pointing to demo node
    demoRef = rootRef.child("dates");

    demoRef.child("date").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            date = dataSnapshot.getValue(String.class);
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });
    Toast.makeText(getContext() , date , Toast.LENGTH_SHORT).show();
}

Upvotes: 0

Views: 115

Answers (2)

Fazal Hussain
Fazal Hussain

Reputation: 1127

Use this code

ValueEventListener postListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
        // Get Post object and use the values to update the UI
        Post post = dataSnapshot.getValue(Post.class);
        // ...
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // Getting Post failed, log a message
        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
        // ...
    }
};

For further details check firebase documentation

https://firebase.google.com/docs/database/android/read-and-write

Upvotes: 0

Peter Haddad
Peter Haddad

Reputation: 80944

Add the toast inside onDataChange:

 demoRef.child("date").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        date = dataSnapshot.getValue(String.class);

Toast.makeText(getContext() , date , Toast.LENGTH_SHORT).show();

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

Since onDataChange is asynchronous,it moves on to another task before it finishes retrieving data , then you need to add the toast inside the method.

Upvotes: 1

Related Questions