Отсутствие сеттера / геттера для объектов 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
когда выражение kotlin как проверить, когда a & b Kotlin: параметр типа Reified делает Gson неудачным Kotlin – Как реализовать ItemClickListener для RecyclerView Преимущества LINQ над функциональными цепочками методов Использование типа Java Void в Котлине Как написать надлежащий тест для реактивного репозитория интерфейса, который возвращает Observable только в том случае, когда есть какое-то событие, как издеваться над запуском этого события Котлин не встраивает некоторые тела Весенняя безопасность. Перенаправление на защищенную страницу после аутентификации Kotlin – Незаконное использование обратного вызова встроенного параметра Возможно ли пересечение в Котлин? Как запустить код, если объект имеет значение null? Kotlin: Блокировка сопрограмм с неблокирующими ввода-выводами Как вызвать функцию после задержки в Котлине? Android Studio (Kotlin) GsonBuilder.registerTypeAdapter () дает 2 ошибки Нет аргумента об ошибке