поэтому с сервера я получу JSON следующим образом:
{
"success": "1",
"data": [
{
"id": 1,
"title": "1",
"url": "5",
"image": "resources/assets/images/banner_images/1548316546.mitra lakuin.png",
"type": "category"
},
{
"id": 2,
"title": "2",
"url": "5",
"image": "resources/assets/images/banner_images/1548316605.mobile banner_-02 (1).png",
"type": "category"
},
{
"id": 4,
"title": "4",
"url": "5",
"image": "resources/assets/images/banner_images/1547010221.gratis ongkir.png",
"type": "category"
},
{
"id": 5,
"title": "Customer",
"url": "5",
"image": "resources/assets/images/banner_images/1548316659.customer service.png",
"type": "category"
}
],
"message": "Banners are returned successfull."
}
, и я создаю 2 класса для преобразования этого JSON в Banner Object.
// 1.
class BannerData(val message : String, val success : String, val data : List<Banner>) {}
// 2.
class Banner(id: Int, imageURL: String) {
@SerializedName("image")
var imageURL : String
val id : Int
init {
Log.i("testX","triggered")
this.id = id
// The code below is used to add percent encoding to URL from server
val unformattedFullPath = "${Endpoint.lakuin}/$imageURL"
val formattedFullPath = URLConverterService.addingPercentEncoding(unformattedFullPath)
this.imageURL = formattedFullPath
}
}
интерфейс для модернизациикак это:
@GET("/app/getbanners")
fun getBanners(): Call<BannerData>
, а построитель интерфейса выглядит так:
object RetrofitHandler {
private val loggingInterceptor = HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)
private val okHttpClient = OkHttpClient.Builder()
.callTimeout(7,TimeUnit.SECONDS)
.addInterceptor(loggingInterceptor)
.build()
private var retrofit = Retrofit.Builder()
.baseUrl(Endpoint.lakuin) // default is set to lakuinAPI
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build()
fun <T> getInstance(APIType: Class<T>) : T {
// baseURL should be change later, if there is more than one API, ex: GoogleMapAPI, LakuinAPI etc
return retrofit.create(APIType)
}
}
и моя проблема .....
, как вы можете видеть из JSONвыше, URL изображения не является полным, я хочу преобразовать imageURL
из: "resources / blablabla.png"
в: "http://xxxx.com/resources/blablabla.png"
иЯ пытаюсь преобразовать его в блоке init в классе Banner
.
, но ..... кажется, что блок init в классе Banner
никогда не запускается, я пытаюсь зарегистрировать его, но яне могу найти в logcat, что Log.i("testX","triggered")
никогда не показывается в logcat
Я действительно могу создать объект Banner, но imageURL точно такой же, как и в JSON, это означает, что блок init никогда не запускается
так что здесь не так?