"No se puede convertir el object de tipo java.lang.String para escribir com.android.projectrc.Listing" al usar Firebase RecyclerAdapter

Estoy intentando cargar un set específico de datos de Firebase (un usuario busca una ciudad y obtenemos las ubicaciones más cercanas y la almacena en una matriz) y tengo un problema al rellenar una vista de reciclador con mis resultados. Obtengo este error: com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.android.projectrc.Listing , lo que parece indicar que com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.android.projectrc.Listing cadenas en lugar de "Listado" – que tiene sentido teniendo en count que la database está estructurada de la siguiente manera:

 Listings { "-L01KIjNtpgq2H0VopCn" : { "LevelOfQuestionnairCompletion" : true, "ListingData" : { "AircraftHouseRules" : { "Pricing" : "100", "SuitableForPets" : "Yes", "SuitableForSmoking" : "No", "SuitableForchildren" : "Yes" }, "BasicInfo" : { "AirportCode" : "ATL", "City" : "Atlanta", "Country" : "United States", "ModelPlane" : "Learjet", "NameOfListing" : "Roomy 4- Seater", "NumberOfGuests" : "0", "Owner" : "WdWB80uRtUPRF2sOFH5uJr2Tfu12", "PrimarilySetupForGuests" : "Yes", "State" : "Georgia", "Street" : "6000 N Terminal PKWY", "ZipCode" : "30320" }, "DetailedInformation" : { "IdealGuests" : "Big groups", "ImageRef" : { "-L01KUEWb8trSidSTzgW" : "5051E390-7FD5-4CEF-9C1B-EB959C13A4C2", "-L01KUEWb8trSidSTzgX" : "E2BCA170-0F7B-43B1-BAC6-BEBBB6DEF630" }, "SummaryOfPlane" : "Give us a brief description of your plane..." } } }, "-L035Y5c_i88HW-BOlbQ" : { "LevelOfQuestionnairCompletion" : true, "ListingData" : { "AircraftHouseRules" : { "Pricing" : "1000", "SuitableForPets" : "Yes", "SuitableForSmoking" : "No", "SuitableForchildren" : "Yes" }, "BasicInfo" : { "AirportCode" : "ATL", "City" : "Mableton", "Country" : "United States", "ModelPlane" : "Learjet", "NameOfListing" : "Roomy 7 Seater Plane", "NumberOfGuests" : "0", "Owner" : "DjElZ1UT7jOOS23kjGwIr6lP5u22", "PrimarilySetupForGuests" : "Yes", "State" : "Georgia", "Street" : "1368 Foxhall Place", "ZipCode" : "30126" }, "DetailedInformation" : { "IdealGuests" : "Big groups", "ImageRef" : { "-L035nMB96ykxHolPYSE" : "B3488600-EFB8-4A7B-B60B-B595E4AFB52E" }, "SummaryOfPlane" : "Give us a brief description of your plane..." } } }, "-L0CiG0yGBvC0bHRjz3W" : { "LevelOfQuestionnairCompletion" : false, "ListingData" : true } } 

Solo estoy interesado en la información en "Información básica" y he hecho una class para get la información relevante para el usuario:

Listing.kt

 data class Listing( val ModelPlane: String = "", val AirportCode: String = "", val City: String = "", val State: String = "") 

El código relevante es el siguiente:

ListingAdapter.kt

 class ListingAdapter(listingModel: Class<Listing>, modelLayout: Int, viewHolderClass: Class<ListingHolder>, dbRef: DatabaseReference) : FirebaseRecyclerAdapter<Listing, ListingHolder>(listingModel, modelLayout, viewHolderClass, dbRef) { override fun populateViewHolder(viewHolder: ListingHolder?, model: Listing?, position: Int) { viewHolder!!.planeModel.text = model!!.ModelPlane viewHolder.airportCode.text = model.ModelPlane } } 

ListingHolder.kt

 class ListingHolder(v: View) : RecyclerView.ViewHolder(v) { var planeModel: TextView = v.listing_plane_model var airportCode: TextView = v.listing_airport_code } 

Y el código que lo une todo:

 for (listing in keyList) { val listingReference = mDatabaseReference .getReference("Listings/$listing/ListingData/BasicInfo") listingReference.keepSynced(true) search_results.adapter = ListingAdapter(Listing::class.java, listings_view_layout, ListingHolder::class.java, listingReference) } 

Estoy bastante seguro de que hay algo que perdí (o estropeé) al crear mi class de Adaptador, pero no estoy del todo seguro de qué, ya que todas las guías que he visto parecen seguir el mismo patrón que he hecho. (El $listing corresponde a la identificación única que se le da a cada listdo en la database, por ejemplo, "-L0CiG0yGBvC0bHRjz3W" )