Получение данных из Firebase с помощью запроса orderByChild - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть String stationName, и я хочу получить расстояние от FireBase в соответствии с предоставленной станцией StationName. Вот моя база данных Firebase:

Firebase node structure

Я использую запрос orderByChild для фильтрации результатов, и мне нужно выбрать только значение расстояния. Вот мой код:

Query query = FirebaseDatabase.getInstance().getReference("Stations").orderByChild("Name").limitToFirst(1).equalTo(sourceName);
query.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        String distance;
        for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
            distance = dataSnapshot.child("Distance").getValue(String.class);
            tt.setText(distance); //to check if it is working or not
        }
    }
    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

    }
});

Мне нужно знать, что не так с кодом. Это не возвращает никакого значения. Заранее спасибо

1 Ответ

0 голосов
/ 01 сентября 2018

Заменить

for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
            distance = dataSnapshot.child("Distance").getValue(String.class);
            tt.setText(distance); //to check if it is working or not
        }

С этим

for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
            distance = snapshot.child("Distance").getValue().toString(); // you 
            //cannot pass the String.class as in the getValue() parameters becasue a long value 
            //can not be cast to class object so you need to call toString() method to convert long value 
            //into the string value.
            tt.setText(distance); //to check if it is working or not
        }

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...