Отсутствие сеттера / геттера для объектов Firebase

Это мой класс Java:

public class OnlineMatch{ private FacebookUser firstplayer; private FacebookUser secondplayer; public OnlineMatch(){ } public OnlineMatch(FacebookUser firstplayer, FacebookUser secondplayer) { this.firstplayer = firstplayer; this.secondplayer = secondplayer; } public FacebookUser getFirstplayer() { return firstplayer; } public void setFirstplayer(FacebookUser firstplayer) { this.firstplayer = firstplayer; } public FacebookUser getSecondplayer() { return secondplayer; } public void setSecondplayer(FacebookUser secondplayer) { this.secondplayer = secondplayer; } 

}

Я могу правильно создавать объекты и загружать их в Firebase. Структура db следующая: Снимок экрана, снятый с панели управления панелью Firebase

Затем я пытаюсь напечатать значения моих объектов OnlineMatch (код Котлина):

 val match = dataSnapshot.child("multiplayer").getValue(OnlineMatch::class.java) if(match!=null){ System.out.println(match) } 

Здесь я получаю этот вывод на консоли Android Studio:

9548-19548 / app.simone W / ClassMapper: нет сеттера / поля для -KqV44f4FUxV8ZDuqL4Y, найденного в классе app.simone.multiplayer.model.OnlineMatch

08-01 19: 14: 38.816 19548-19548 / app.simone W / ClassMapper: нет сеттера / поля для -KqV3sAPXPcYrtr61cDy, найденного в классе app.simone.multiplayer.model.OnlineMatch

08-01 19: 14: 38.816 19548-19548 / app.simone W / ClassMapper: нет сеттера / поля для -KqV2BGH7Z-Y9RxnPGpt, найденного в классе app.simone.multiplayer.model.OnlineMatch

Ваш код запрашивает все в multiplayer , которое включает в себя все объекты OnlineMatch, которые вы там ранее нажали. Из сообщения об ошибке вы можете увидеть, что он пытается найти сеттер или поле для push-ID -KqV44f4FUxV8ZDuqL4Y которое он нашел только в multiplayer Если вы хотите получить один объект OnlineMatch, вам придется копать объекты в идентификаторы push под multiplayer . Поэтому это должно дать вам что-то:

 dataSnapshot.child("multiplayer/-KqV44f4FUxV8ZDuqL4Y").getValue(OnlineMatch::class.java) 

В любом случае вам понадобится идентификатор push по вашему выбору или откройте их у детей моментального снимка и создайте новый снимок этого ребенка.

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

 override fun onDataChange(dataSnapshot: DataSnapshot) { // Get Post object and use the values to update the UI val match = dataSnapshot.children var keysArray = KeysHandler() if(match!=null){ // saving keys into an array for (data in match){ keysArray.addToList(data.key) } // saving an OnlineMatch object into another array repeat(keysArray.list.size){ i-> val onlineMatch = dataSnapshot.child(keysArray.getElement(i)).getValue(OnlineMatch::class.java)!! requestsUsers.add(onlineMatch) } // updating GUI updateRequests() } } 
Intereting Posts
Android View получает оригинал «Wrap Content» Размер моего представления Заменить java-общий интерфейс в Kotlin для привязки данных Информация не загружается должным образом в firebase-firestore Можно ли удалить непроверенный бросок в Kotlin при использовании arrayOfNulls? Файл spring-configuration-metadata.json не генерируется в IntelliJ Idea для класса Kotlin @ConfigurationProperties Файл Kotlin против класса. Какая разница? Метод копирования класса данных Kotlin не выполняет глубокое копирование всех членов В тесте kotlin укажите, как назначить lateinit var Сгладить массив в Котлине Kotlin: Как я могу позволить Android Studio реализовать интерфейс в нижней части класса Десериализация классов с ленивыми свойствами с использованием Gson и Kotlin 1.0 beta 4 Intellij Idea не строится, когда я нажимаю Run Kotlin: Не удается найти класс символов Фрагмент или другие классы Android Асинхронная работа, но получение нерешенной ссылки для ожидания Что отличается между двумя конструкторами?