【发布时间】:2019-10-16 23:16:30
【问题描述】:
我得到一个 Json 数据,其中存储了图像和其他一些数据。我正在尝试使用 Retrofit 在图像视图中获取该图像。我创建了代码中详细说明的所需内容的 DTO。我在改造失败时遇到错误。我该如何解决这个问题?
- 已创建改造实例
- 已创建 JSON 数据和属性的 DTO
-
还创建了 API 服务 https://s3.ap-south-1.amazonaws.com/zestlife/promotional_banner.json 存储 JSON 数据的链接。
@Parcelize @JsonIgnoreProperties(ignoreUnknown = true) open class MerchantPromotionDTO( @JsonProperty("image") var image: ImageUrlsDTO? = null, @JsonProperty("cta") var cta: CTADTO? = null, @JsonProperty("probability") var probability: Int? = 0, @JsonProperty("isDismissible") var isDismissible: Boolean? = true, @JsonProperty("showImmediate") var showImmediate: Boolean? = false ) : BaseResponseDTO() @Parcelize @JsonIgnoreProperties(ignoreUnknown = true) class MerchantpromotionBDTO( @JsonProperty("promotions") var promotions: ArrayList<MerchantPromotionDTO>?=null ) : BaseResponseDTO() @GET("https://demo6861386.mockable.io/banner/test") fun getPromotionalBanner(): Call<ArrayList<MerchantpromotionBDTO>> fun getPromotionalDetails(): LiveData<ResponseDTO<ArrayList<MerchantpromotionBDTO>>>{ val pBannerDetails=MutableLiveData<ResponseDTO<ArrayList<MerchantpromotionBDTO>>>() ApiComponent.enqueue({ getPromotionalBanner( ) },object :OnRequestComplete<ArrayList<MerchantpromotionBDTO>>{ override fun onComplete(responseDTO: ResponseDTO<ArrayList<MerchantpromotionBDTO>>) { pBannerDetails.value=responseDTO } } )
编辑:
override fun onStart() {
super.onStart()
populateData()
}
@Synchronized
private fun populateData() {
MerchantpromotionBDTO?.let {
val promImageUrl = it.image?.getImageUrl(CommonUtils.getDisplayDensityLevel(context))
picasso.load(if (promImageUrl.isNullOrEmpty()) null else promImageUrl)
.placeholder(R.drawable.ic_placeholder_minimal)
.into(ivMerchantPromotionBanner)
}
}
我希望响应到我的 logcat 并在 Imageview 中获取图像
【问题讨论】:
标签: android json api kotlin retrofit