Firebase возвращает данные, которые не существуют.Как я могу это исправить? - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть три объекта (Book, Listicle_modell и Feed_modell), и я хочу получить их в списке объектов.Но я получаю данные из базы данных Firebase, которая не существует.

Моя структура Firebase:

-userid 
 - key
   -name2: Nova Conta
   -title: The best music in the world;
   -thumbnail: url;

введите описание изображения здесь ** У меня только один ребенок, почему я получаю Firebase, дайте мне три объекта?**.

В моей базе данных у меня только один дочерний элемент, значения которого соответствуют Feed_modell, но я получаю макет из книги и списков, не имея этих объектов (ключей, соответствующих book.class и listicle)в моей базе данных, как показывают фотографии: enter image description here

enter image description here

Проблема заключается в следующем: ** эти два изображения, которые имеютбез заголовка, без миниатюры, без имени, просто написанные представления, называются , но они не существуют , тестовое объявление работает отлично .

Это мой код Android:

    dbforFeed = FirebaseDatabase.getInstance().getReference("feedPosts").child(feedReceivingKey);

    dbforFeed.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {

            Feed_modell post = dataSnapshot.getValue(Feed_modell.class);
            Book book = dataSnapshot.getValue(Book.class);
            Listicle_modell lm = dataSnapshot.getValue(Listicle_modell.class);

            feedList.addAll(Arrays.asList(post, book, new all_modell("ca-app-pub-4452407171570296~9731286762"), lm));

            recyclerViewFeedAdapter.notifyDataSetChanged();
        }

        @Override
        public void onChildChanged( DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onChildRemoved( DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved( DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onCancelled( DatabaseError databaseError) {

        }
    });

Вот моя структура базы данных

enter image description here

1 Ответ

0 голосов
/ 06 февраля 2019

Важной практикой при использовании базы данных NoSQL является наличие под узлом (feedPosts) объектов одного типа.Как я понял из вашего комментария:

Feed_modell имеет.Просто Feed_modell имеет эти поля.

Существующий объект имеет тип Feed_modell.Как я вижу в вашем коде, из одного и того же объекта dataSnapshot вы пытаетесь получить три разных объекта Feed_modell, Book и Listicle_modell, что неверно.Один dataSnapshot может быть преобразован в один тип объекта.Чтобы решить эту проблему, просмотрите следующие изменения:

List<Listicle_modell> feedList = new ArrayList<>();
//Feed_modell post = dataSnapshot.getValue(Feed_modell.class);
//Book book = dataSnapshot.getValue(Book.class);
Listicle_modell lm = dataSnapshot.getValue(Listicle_modell.class);
feedList.add(lm);
recyclerViewFeedAdapter.notifyDataSetChanged();

Убедитесь, что ваш адаптер также имеет тип Listicle_modell.

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