Como obter datos dun json anidado (Kotlin, Android Studio)

I THIE SIGN JSON:

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

}

Teño que mostrar estes datos nunha reciclavieta, o campo “mensaxe” e os seus campos posteriores aparentemente deben ser invocados unha vez e o campo “entregas” contén unha variedade de arrays anidados dentro; Campos “Orde”, “Pickup” e “Entrega forman parte dunha posición dentro dunha variedade de” entregas “.

Estou usando GSON LIBLIOTECA E RETROFIT para facer chamadas, nos meus obxectos que teño a continuación:

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

)

Esta clase admite a “mensaxe” chamada do servidor e a seguinte en orde de 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 )

Esta clase admite a lista de “Entregas” Campo en entregas Val

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 dentro desta clase ” Entregiesitem “Temos os campos de cada matriz dentro do campo de” entregas “como 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)

en fragmento onde invoco o reciclobriejo que teño a seguinte función onde eu m chamando ao reciclobriejo que está sorprendido:

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

O obxecto Subeasssign provén da súa clase como segue:

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

Un dos problemas é que teño que incluír o adaptador de reciclaVEVIEW nesta función a través dunha lista, pero a función só recibe consignas E esta non é unha lista que só vén como unha “mensaxe” e, obviamente, no meu adaptador, teño que acceder a membros da mensaxe como unha lista para mostrarlles nunha recicla de reciclaxe, este é o adaptador:

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 alguén me pode axudar con este problema, estarei agradecido, esperamos que

Saúdos

Sentímolo polo meu mal inglés, espero explicaron ben

Deixa unha resposta

O teu enderezo electrónico non se publicará Os campos obrigatorios están marcados con *