Предполагая, что mRoot
указывает на корень Firebase, для решения этой проблемы измените следующую строку кода:
mRoot.addValueEventListener(*/ ... */);
до
mRoot.child("cars").addValueEventListener(*/ ... */);
А чтобы получить объект Car
, вы можете просто использовать:
Car car = childSnapshot.getValue(Car.class);
Редактировать: Теперь вы можете увидеть всю структуру вашей базы данных. Чтобы решить эту проблему, используйте следующие строки кода:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference carsRef = rootRef.child("cars");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
Car car = ds.getValue(Car.class);
Log.d(TAG, car.getHospital());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
};
carsRef.addListenerForSingleValueEvent(valueEventListener);
Вывод в вашем logcat будет: 11
.
Или, проще, используя класс Long
:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference carsRef = rootRef.child("cars");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
Long hospital = ds.child("hospital").getValue(Long.class);
Log.d(TAG, hospital);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
};
carsRef.addListenerForSingleValueEvent(valueEventListener);
Вывод будет таким же.
Также нет необходимости использовать @PropertyName
, потому что все ваши поля в классе соответствуют полям в вашей базе данных.