Sin setter / getter para objects Firebase

Esta es mi class de 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; } 

}

Puedo crear objects correctamente y uploadlos a Firebase. La estructura db es la siguiente: Captura de pantalla tomada del control del panel Firebase

Luego trato de imprimir los valores de mis objects OnlineMatch (código de Kotlin):

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

Aquí obtengo esta salida en la console de Android Studio:

9548-19548 / app.simone W / ClassMapper: No se encontró ningún setter / campo para -KqV44f4FUxV8ZDuqL4Y en la class app.simone.multiplayer.model.OnlineMatch

08-01 19: 14: 38.816 19548-19548 / app.simone W / ClassMapper: No se encontró ningún setter / campo para -KqV3sAPXPcYrtr61cDy en la class app.simone.multiplayer.model.OnlineMatch

08-01 19: 14: 38.816 19548-19548 / app.simone W / ClassMapper: No se encontró ningún setter / campo para -KqV2BGH7Z-Y9RxnPGpt en la class app.simone.multiplayer.model.OnlineMatch

Tu código está pidiendo todo en el multiplayer , que incluye todos los objects de OnlineMatch que has insertado allí anteriormente. Puede ver en el post de error que está tratando de encontrar un setter o campo para el ID de inserción -KqV44f4FUxV8ZDuqL4Y que encontró justo debajo del multiplayer Si desea get un solo object OnlineMatch, tendrá que profundizar en los objects de los ID de inserción bajo el multiplayer . Entonces, esto debería darte algo:

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

En cualquier caso, deberá tener la ID de inserción de su elección, o descubrirla de los hijos de la instantánea y crear una nueva instantánea de ese niño.

Doug Stevenson, tu respuesta fue útil para mí. Creé una matriz de cadenas donde guardo la key y luego repito sobre el niño para cada key específica:

 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() } } 
  • LinkageError en una instancia de la class Kotlin con método notify ()
  • ¿Cómo obtengo un número fijo de celdas de cambio de tamaño sin relleno en javafx?
  • Cómo agregar funcionalidad +/- a un butting en Android kotlin
  • Método hashMapOf () en Kotlin
  • Reemplazar la recostackción de la secuencia en la solución nativa de Kotlin
  • Kotlin coroutine no espera a ser hecho
  • Android Studio convirtiendo Java en error de Kotlin No se puede inferir un tipo para este parámetro. Por favor especifíquelo explícitamente
  • Kotlin: método genérico y para bucle preguntando por iterador ()
  • Cómo hacer una list KOTLIN con lists de corchetes API JSON
  • Kotlin detecta el time de espera a petición del server
  • Diseño de consulta de database de Firebase