Список полученных значений в базе данных Firebase в реальном времени - PullRequest
0 голосов
/ 02 ноября 2018

enter image description here

Дорогие друзья,

Я обращаюсь к данным из базы данных Firebase, но не могу получить список своих данных.

Я получаю следующее исключение:

E/UncaughtException: com.google.firebase.database.DatabaseException: Can't convert object of type java.util.ArrayList to type com.sg.rapid.Models.AlaramData`

вот мой код:

 mDatabaseReference.addValueEventListener(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            // This method is called once with the initial value and again
            // whenever data at this location is updated.

            for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
                AlaramData  usersList =  dataSnapshot.getValue(AlaramData.class);
                String name = usersList.getStatus();
                childList.add(usersList);
                // here you can access to name property like university.name
            }

            Log.d("", "Value is: " + childList);
            //Create a List of Section DataModel implements Section

            sections.add(new SectionHeader(childList, "2018", 1));
            adapterRecycler.notifyDataSetChanged();
        }

Заранее спасибо.

Ответы [ 2 ]

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

Я решил проблему, изменив структуру json в базе данных firebase. enter image description here

код следующий:

// Чтение из базы данных

    mDatabaseReference.addValueEventListener(new ValueEventListener() {
        @Override


        public void onDataChange(DataSnapshot dataSnapshot) {
            // This method is called once with the initial value and again
            // whenever data at this location is updated.
            Log.d("", "onChildChanged:" + dataSnapshot.getKey());
            sections.clear();



             childList.clear();
            for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {

                AlaramData    alaramData =  postSnapshot.getValue(AlaramData.class);
               int x = 0;
                // here you can access to name property like university.name
                childList.add(alaramData);
            }


            Log.d("", "Value is: " + childList);
            //Create a List of Section DataModel implements Section

            sections.add(new SectionHeader(childList, "2018", 1));
            adapterRecycler.notifyDataChanged(sections);

        }

        @Override
        public void onCancelled(DatabaseError error) {
            // Failed to read value
            Log.w("", "Failed to read value.", error.toException());
        }
    });
0 голосов
/ 02 ноября 2018

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

Следует использовать postSnapshot вместо dataSnapshot. Попробуйте это:

AlaramData usersList = postSnapshot.getValue(AlaramData.class);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...