I've a simple database where I save the users of my application, like so:
I want to retrieve all the users_data.
I got the following User model:
public class User {
private String name;
private String email;
private String uid;
private String pass;
public User() {
}
public User(String uid, String name, String email, String pass) {
this.name = name;
this.email = email;
this.uid = uid;
this.pass = pass;
}
//GETTERS & SETTERS//
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", email='" + email + '\'' +
", uid='" + uid + '\'' +
", pass='" + pass + '\'' +
'}';
}
}
The problem is that i can't seem able to retrieve the data, I'm using the following method:
public ArrayList<User> listUsers() {
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference().child("users" + "/" + "users_data");
final ArrayList<User> userArrayList = new ArrayList<>();
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User post = dataSnapshot.getValue(User.class);
userArrayList.add(post);
System.out.println(post);
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
return userArrayList;
}
But this returns an array of 0 elements. What am I doing wrong? If i change the DatabaseReference to one of the child the method returns 1 user. Any ideas?