Comment obtenir des données d’un JSON imbriqué (Kotlin, Android Studio)

J’ai suivi JSON:

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

}

Je dois afficher ces données dans un recyclerview, « message » et ses champs ultérieurs doivent apparemment être invoqués une fois et que les « livraisons » de champ contiennent une gamme de tableaux imbriqués à l’intérieur; Les champs « ordre », « ramassage » et « la livraison font partie d’une position à l’intérieur d’une maquette de » livraisons « .

J’utilise la bibliothèque de GSON et la rénovation des appels, dans mes objets que j’ai suivis:

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

)

Cette classe prend en charge « Message » appelant du serveur et la suivante de l’ordre JSON

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 )

Cette classe prend en charge la liste des champs « livraisons » dans Val livraisons

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

et à l’intérieur de cette classe  » LivriesItem « Nous avons les champs de chaque matrice dans le champ » livraisons « comme suit

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 fragment où j’invoque le recyclerview, j’ai la fonction suivante où je ‘ m Calling the RecyclerView qui est annulé:

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

L’objet ResponseAsign provient de sa classe, comme suit:

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

L’un des problèmes est que je dois inclure l’adaptateur de recyclerview dans cette fonction via une liste, mais la fonction ne reçoit que une responsabilité Et ce n’est pas une liste qui vient simplement comme un « message » et évidemment dans mon adaptateur, je dois accéder aux membres du message en tant que liste pour les afficher dans un recyclerview, il s’agit de l’adaptateur:

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()*/}}

Si quelqu’un peut m’aider avec ce problème, je serai reconnaissant, j’espère

Cordialement

Désolé pour mon mauvais anglais, j’espère ont bien expliqué

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *