Да, вы правы.
Библиотека поддерживает только Double, Boolean и String .
Также ваш query
прав. В качестве огненной базы считают 1
double
. Итак, ваш query
должен работать. Проверьте ниже:
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
Query query = databaseReference.orderByChild("id").equalTo(1);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
String textValue = childSnapshot.child("text").getValue(String.class);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Обновление для Kotlin: В Jave int
в double
автоматически конвертируется с помощью оператора присваивания, так как нижний тип может быть неявно преобразован в более высокий тип , Это также известно как неявное приведение типа или повышение типа .
Но в Kotlin нет ничего о неявном приведении типов. Вы должны сделать это самостоятельно, используя toDouble () . Проверьте ниже:
val databaseReference = FirebaseDatabase.getInstance().reference
val query = databaseReference.orderByChild("id").equalTo(1.toDouble())
query.addListenerForSingleValueEvent(object: ValueEventListener {
override fun onCancelled(dataSnapshot: DatabaseError) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun onDataChange(dataSnapshot: DataSnapshot) {
dataSnapshot.children.forEach { childSnapshot->
val textValue = childSnapshot.child("text").getValue(String::class.java)
}
}
})