Невозможно прочитать объекты из снимка базы данных Firebase - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь прочитать широту и долготу из Firebase и ставлю маркер в этих местах. Но кажется, что происходит сбой приложения, которое я не могу найти даже в Logcat. Попытался поставить некоторые проверки журналов после каждого оператора и обнаружил, что проблема возникает, когда я пытаюсь поместить значения в объекты класса из снимка базы данных. Я пытаюсь использовать цикл для извлечения всех объектов из снимка. Вот структура моей базы данных. enter image description here

Код активности «Мои карты», в котором я пытаюсь поместить значения из снимка базы данных в мои объекты класса.

//reading stations from database
List<Stations> stations;
 mDatabase = FirebaseDatabase.getInstance().getReference().child("STATIONS");

    ValueEventListener stationListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            //found out that error is here
            for(DataSnapshot stationsSnapshot: dataSnapshot.getChildren()){
                stations.add(stationsSnapshot.getValue(Station.class));
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.i("Station Read[ERROR]",databaseError.getMessage());
        }
    };
    mDatabase.addListenerForSingleValueEvent(stationListener);

Мой код класса станции и код класса местоположения .

Код для обозначения местоположений на карте, извлеченных из базы огня.

    //Placing all station data on Maps
    for(int i=0 ; i<stations.size() ; i++){
        LatLng location = new LatLng(stations.get(i).getLocation().getLatitude(),
                stations.get(i).getLocation().getLongitude());
        mMap.addMarker(new MarkerOptions().position(location).title(stations.get(i).getName()));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(location));
    }

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018

Инициализация списка станций.

List<Stations> stations= new ArrayList<>();

Логика добавления маркеров мне кажется вполне подходящей. Просто добавив его в нужном месте, как сказал Момен, должно сработать.

0 голосов
/ 03 ноября 2018

1 - объект Stations должен быть похож на объект в базе данных. вот так

public class Stations{

public Location location;
public String name

//..getter and setter

public static class Location{
public double latitude;
public double  longitude;

//..getter and setter

}
}

поля должны быть открытыми

2 - инициализировать массив

List<Stations> stations=new Arraylist();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...