Come ottenere i dati da un JSON NESTED (Kotlin, Android Studio)

Ho seguito JSON:

{"message": { "AmountTotal": 0.0, "dateCort": "2020-03-30", "deliveries": }

}

Devo visualizzare questi dati in un riciclo, campo “Messaggio” e i suoi campi successivi apparentemente devono essere richiamati una volta e il campo “Le consegne” contiene una serie di array nidificati all’interno; Campi “Ordine”, “Pickup” e “La consegna fa parte di una posizione all’interno di una serie di” consegne “.

Sto usando GSON Library e retrofit per fare chiamate, nei miei oggetti che ho seguito:

data class ResponseAssign( @field:SerializedName("message") val message : Message? = null

)

Questa classe supporta “Messaggio” che chiama dal server e il successivo in ordine di json array

data class Message( @field:SerializedName("AmountTotal") val amountTotal: Double? = null, @field:SerializedName("dateCort") val dateCort: String? = null, @field:SerializedName("deliveries") val deliveries: List<DeliveriesItem?>? = null )

Questa classe supporta l’elenco dei “Consegna” Campo in Val Consegne

data class DeliveriesItem(@field:SerializedName("delivery")val delivery: Delivery? = null,@field:SerializedName("pickUp")val pickUp: PickUp? = null,@field:SerializedName("order")val order: Order? = null)

E all’interno di questa classe ” ConsessiItem “Abbiamo i campi di ciascun array all’interno del campo” Consegne “come segue

data class Delivery(@field:SerializedName("latitud")val latitud: String? = null,@field:SerializedName("longitud")val longitud: String? = null,@field:SerializedName("address")val address: String? = null,@field:SerializedName("emailClient")val emailClient: String? = null,@field:SerializedName("contactName")val contactName: String? = null,@field:SerializedName("phoneClient")val phoneClient: String? = null,@field:SerializedName("scheduledAt")val scheduledAt: String? = null)data class PickUp(@field:SerializedName("addressDestination")val addressDestination: String? = null)data class Order(@field:SerializedName("recolect")val recolect: Boolean? = null,@field:SerializedName("currentStatus")val currenStatus: String? = null,@field:SerializedName("amount")val amount: Double? = null,@field:SerializedName("notes")val notes: String? = null,@field:SerializedName("deliveryType")val deliveryType: String? = null,@field:SerializedName("company")val company: String? = null,@field:SerializedName("counter")val counter: String? = null,@field:SerializedName("trackingid")val trackingid: String? = null)

In frammento dove invoco il riciclo, ho la seguente funzione dove io” M Chiamare il riciclo di riciclo che è sovrastante:

 override fun sendAssignOrder(responseAssign: ResponseAssign) { Log.d("onResponseDataOrder", responseAssign.toString())}

L’oggetto ResponseSSign proviene dalla sua classe come segue:

data class ResponseAssign( @field:SerializedName("message") val message : Message? = null )

Uno dei problemi è necessario includere l’adattatore di riciclo di riciclo in questa funzione tramite un elenco, ma la funzione ottiene solo una gestione E questo non è un elenco che questo è come un “messaggio” e ovviamente nel mio adattatore devo accedere ai membri dei messaggi come elenco per visualizzarli in un riciclo di riciclo, questo è l’adattatore:

class OrderAssignAdapter(val items : List<DeliveriesItem>, view: View, contexto: Context, bundler : Bundle): RecyclerView.Adapter<OrderAssignAdapter.AssignViewAdapter>() {private var filterListResult : List<DeliveriesItem> = itemsprivate var vista : View = viewprivate var bundle : Bundle = bundlerprivate var context : Context = contextoclass AssignViewAdapter(itemView : View): RecyclerView.ViewHolder(itemView) { var textCompany : TextView = itemView.findViewById(R.id.txtcompany) var textDirEntrega : TextView = itemView.findViewById(R.id.txtDirentrega) var textClaveRastreo : TextView = itemView.findViewById(R.id.txtclaveRastreo) var textTipoEntrega : TextView = itemView.findViewById(R.id.txttipoentrega) var textMonto : TextView = itemView.findViewById(R.id.txtmonto) var textStatus : TextView = itemView.findViewById(R.id.txtstatus)}override fun onCreateViewHolder(parent: ViewGroup, p0: Int): AssignViewAdapter { val vista : View = LayoutInflater.from(parent.context).inflate(R.layout.item_orden,parent,false) val layoutParams = RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) vista.layoutParams=layoutParams return AssignViewAdapter(vista)}override fun getItemCount(): Int { return filterListResult.size}override fun onBindViewHolder(holder: AssignViewAdapter, position: Int) { /*holder.textCompany.text = filterListResult.deliveries?.get(position)?.order?.get(position)?.company?.get(position).toString() holder.textDirEntrega.text = filterListResult.deliveries?.get(position)?.delivery?.get(position)?.address?.get(position).toString() holder.textClaveRastreo.text = filterListResult.deliveries?.get(position)?.order?.get(position)?.trackingid?.get(position).toString() holder.textTipoEntrega.text = filterListResult.deliveries?.get(position)?.order?.get(position)?.deliveryType?.get(position).toString() holder.textMonto.text = filterListResult.deliveries?.get(position)?.order?.get(position)?.amount.toString() holder.textStatus.text = filterListResult.deliveries?.get(position)?.order?.get(position)?.currenStatus?.get(position).toString()*/}}

Se qualcuno può aiutarmi con questo problema, sarò grato, si spera che

Cordiali saluti

Scusa per il mio cattivo inglese, spero di farlo ho spiegato bene

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *