Как получить все дочерние значения от нового потомка, используя снимок данных? - PullRequest
0 голосов
/ 08 апреля 2019

Я запускаю свое приложение и добавляю нового дочернего элемента в firebase, в режиме онлайн вы можете видеть все значения дочернего элемента, но моментальный снимок данных получает только первое добавленное значение нового дочернего элемента.

мы попытались прочитать дочерние значения, каждое из которых в отдельности, но кажется, что моментальный снимок данных даже не знает, что они существуют.

public static void NotifyToTripList(final NotifyDataChange<List<Trip>> notifyDataChange) {
        if (notifyDataChange != null) {
            if (tripRefChildEventListener != null) {
                notifyDataChange.onFailure(new Exception("first unNotify trip list"));
                return;
            }

            tripList.clear();
            tripRefChildEventListener = new ChildEventListener() {
@override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {                   
                   Trip t=new Trip();
                    t.setTripID(dataSnapshot.getKey());
                    if(dataSnapshot.child("DriverID").getValue()!=null) t.setDriverID(Long.parseLong(dataSnapshot.child("DriverID").getValue().toString()));
                    else t.setDriverID(0L);
                    t.setDestination(dataSnapshot.child("Destination").getValue().toString());
                    t.setCurrentLocation(dataSnapshot.child("CurrentLocation").getValue().toString());
                    t.setPassengerEmail(dataSnapshot.child("PassengerEmail").getValue().toString());
                    t.setPassengerNumber(dataSnapshot.child("PassengerNumber").getValue().toString());
                    t.setPassengerName(dataSnapshot.child("PassengerName").getValue().toString());
                    SimpleDateFormat format = new SimpleDateFormat("HH:mm"); 
                   tripList.add(t);
                    notifyDataChange.OnDataChanged(tripList);
}

код из главного меню:

 FireBaseDataBase.NotifyToTripList(new FireBaseDataBase.NotifyDataChange<List<Trip>>() {
            @Override
            public void OnDataChanged(List<Trip> obj) {
                FireBaseDataBase.tripList = obj;
            }

            @Override
            public void onFailure(Exception exception) {
                Toast.makeText(getBaseContext(), "error to get trips list\n" + exception.toString(), Toast.LENGTH_LONG).show();
            }
        });

Вот как выглядит обычный снимок данных:

DataSnapshot {key = -LbbpVoPNgUDi-0eTDRY, значение = {Назначение = Мордехай А'лиаш 6, Иерусалим, DriverID = 666666666, PassengerNumber = 0535291683, PassengerName = chana Gross, PassengerEmail=chanatriplet@gmail.com, PickU: 20:00, CurrentLocation = Бейт Ха-Дефус 7, Иерусалим, TripStatus = DONE, DropOffTime = 21: 06: 04}}

и вот как выглядит новый снимок datasnapshot:

DataSnapshot {key = -Lbwu6QnvcvTZQuPsNEI, значение = {CurrentLocation = препарат, Тель-Авив}}

Вот как выглядит структура базы данных: нажмите здесь

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