Я пытаюсь получить список пользователей из Firebase в Android.
![enter image description here](https://i.stack.imgur.com/kv7OO.png)
У меня уже есть пользовательский uuid, и с его помощью я пытаюсь получить весь объект. Uuid - это и имя узла, и поле внутри пользовательского узла (конечно же, идентичные).
Вот мой код:
DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference("users");
Query query = usersRef.orderByChild("uuid").equalTo(animalMarker.getUserUid());
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Log.d(TAG, "onDataChange: xxxxxxxx---- entered onDataChange");
// go to node "users/userUID" , becuase dataSnapshot is parent node
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Log.d(TAG, "xxxxxxxx---- onDataChange: ds= " + ds);
User user = ds.getValue(User.class);
Log.d(TAG, "xxxxxxxx---- onDataChange: user=" + user);
// createdByTV.setText("Created by \n" + user.getEmail());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Я не знаю, происходит ли ошибка «ожидаемый список, но получил HashMap» из всего самого DataSnapshot или из списка животных внутри пользователя (в классе пользователя есть поле «Список животных»)
Я уже проверил этот похожий вопрос Andorid-Expect a List при десериализации, но получил класс java.util.HashMap
и несколько других, но я все еще не могу понять, что не так.
РЕДАКТИРОВАТЬ: я пытаюсь получить электронную почту пользователя, зная, что это идентификатор (uuid). Хотя получение всего объекта User не является необходимым, меня интересует, как это будет сделано, поскольку я не могу выполнить ни одно из этих действий.
РЕДАКТИРОВАТЬ: вот мой класс пользователя
public class User {
private String uuid;
private String email;
private String name;
private List<User> friends;
private List<Animal> animals;
public User() {
}
public User(String email, String name) {
this.email = email;
this.name = name;
}
public User(String uuid, String email, String name) {
this.uuid = uuid;
this.email = email;
this.name = name;
}
... // getters and setters, toString and other such
}
При попытке получить пользователя, у которого нет узла животных внутри, все работает нормально. но при попытке получить пользователя с узлом животных, приложение вылетает.