Получение набора данных о широте и долготе конкретного местоположения, сохраненного в Firebase

#android #firebase #firebase-realtime-database #data-retrieval

#Android #firebase #firebase-база данных в реальном времени #извлечение данных

Вопрос:

В моей базе данных Firebase я установил его следующим образом:

Текущие данные Firebase

Широта и долгота представлены 0 и 1 соответственно. В настоящее время я использую жестко запрограммированный метод для получения широты, долготы и имени:

 Firebase locationRef = mRootRef.child("loc");
        locationRef.addValueEventListener(new com.firebase.client.ValueEventListener() {
            @Override
            public void onDataChange(com.firebase.client.DataSnapshot dataSnapshot) {

                Double latitude = dataSnapshot.child("0").getValue(Double.class);
                Double longitude = dataSnapshot.child("1").getValue(Double.class);
                String name = dataSnapshot.child("name").getValue(String.class);}
            @Override
            public void onCancelled(FirebaseError firebaseError) {
                throw firebaseError.toException();

            }
        });
  

Теперь я устанавливаю свои данные, как показано на изображении:

Новый набор данных Firebase

Как я могу получить значение данных переменной ( 0 , 1 и name ) для loc1 и loc2 таким образом, чтобы я мог легко получить их без жесткого кодирования. В будущем количество местоположений также будет увеличиваться.

Ответ №1:

Я думаю, вам нужно что-то вроде следующего

Необходимо добавить getChildren() для каждого, он предоставит все ваше местоположение в loc. вы также можете использовать эту информацию в каком-либо другом массиве

 Firebase locationRef = mRootRef.child("loc");
locationRef.addValueEventListener(new com.firebase.client.ValueEventListener() {
    @Override
    public void onDataChange(com.firebase.client.DataSnapshot dataSnapshot) {


        for (DataSnapshot snapm: dataSnapshot.getChildren()) {

            Double latitude = snapm.child("0").getValue(Double.class);
            Double longitude = snapm.child("1").getValue(Double.class);
            String name = snapm.child("name").getValue(String.class);}
        }
    @Override
    public void onCancelled(FirebaseError firebaseError) {
        throw firebaseError.toException();

    }
});