suppose i am getting data from firebase as
DatabaseReference mdb=FirebaseDatabase.getInstance().getReference("users/"+id);
mdb.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name=dataSnapshot.child("name").getValue();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
//point b
its working perfectly.... if i try to print that string name using
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name=dataSnapshot.child("name").getValue();
System.out.println(name);
}
it will print that string. but what if i want that string name outside the listener, like in first code where i have added a comment //point b
i tried defining string name globally. but it only prints the println which is inside onDatachange()... but it will print null at //point b...even if i defined the String name globally.
like
String name;
DatabaseReference mdb=FirebaseDatabase.getInstance().getReference("users/"+id);
mdb.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
name=dataSnapshot.child("name").getValue();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
//point b
edit actually its a function returning a string value like
public String getData(String id)
{
String name;
DatabaseReference mdb=FirebaseDatabase.getInstance().getReference("users/"+id);
mdb.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
name=dataSnapshot.child("name").getValue();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return name;
}