iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
自我挑戰組

Android kotlin &MVVM系列 第 8

Android學習筆記08

retrofit
kotlin可以使用retrofit結合coroutines去實現取得api的方法,那因為我是使用mvvm架構,所以我會把rretrofit而外寫成一個object然後在viewmodel中實作

object GoRetrofit{
    private val retrofit: Retrofit by lazy{
        Retrofit.Builder()
            .baseUrl("https://jsonplaceholder.typicode.com")
            .addConverterFactory(GsonConverterFactory.create())
            .build()
    }

    val api: API by lazy {
        retrofit.create(API::class.java)
    }

viewmodel

fun coroutine(){
        myScope.launch(Dispatchers.Main){
//            progressBar.visibility = View.VISIBLE
            retrofit()
//            progressBar.visibility = View.GONE
        }
    }

    private suspend fun retrofit() = withContext(Dispatchers.IO){
        val response = GoRetrofit.api.getAPI()
        if (response.isSuccessful) {
            Log.i("RETROFIT TEST", response.body().toString())
            data.postValue(response.body() as ArrayList<Post>)
        }
    }

當然也需要一個interface來response資料

interface API {
    @GET("/posts")
    suspend fun getAPI(): Response<List<Post>>
}

這樣就可以簡單的使用retrofit了


上一篇
Android學習筆記07
下一篇
Android學習筆記09
系列文
Android kotlin &MVVM30

尚未有邦友留言

立即登入留言