Advertisement
EugeneKotlin

Untitled

Mar 28th, 2021
484
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 2.06 KB | None | 0 0
  1. // App
  2.  
  3. class UserApp : Application() {
  4.  
  5.     lateinit var userApi: UsersApi
  6.  
  7.     override fun onCreate() {
  8.         super.onCreate()
  9.  
  10.         configureRetrofit()
  11.     }
  12.  
  13.     private fun configureRetrofit() {
  14.  
  15.         val httpLoggingInterceptor = HttpLoggingInterceptor()
  16.         httpLoggingInterceptor.level = HttpLoggingInterceptor.Level.BODY
  17.  
  18.         val okHttpClient = OkHttpClient.Builder()
  19.             .addInterceptor(httpLoggingInterceptor)
  20.             .build()
  21.  
  22.         val retrofit = Retrofit.Builder()
  23.             .baseUrl("https://reqres.in/")
  24.             .client(okHttpClient)
  25.             .addConverterFactory(GsonConverterFactory.create())
  26.             .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
  27.             .build()
  28.  
  29.         userApi = retrofit.create(UsersApi::class.java)
  30.     }
  31. }
  32.  
  33. // ViewModel
  34.  
  35. class UserListViewModel(application: Application) : AndroidViewModel(application) {
  36.  
  37.     private val compositeDisposable = CompositeDisposable()
  38.  
  39.     override fun onCleared() {
  40.         compositeDisposable.clear()
  41.         super.onCleared()
  42.     }
  43.  
  44.     fun fetchUserList(usersApi: UsersApi?) {
  45.  
  46.         usersApi?.let {
  47.             compositeDisposable.add(
  48.                 usersApi.getUserList()
  49.                     .subscribeOn(Schedulers.io())
  50.                     .observeOn(AndroidSchedulers.mainThread())
  51.                     .subscribe({
  52.  
  53.                     }, {
  54.  
  55.                     })
  56.             )
  57.         }
  58.     }
  59. }
  60.  
  61. // Api
  62. interface UsersApi {
  63.     @GET("./api/users")
  64.     @Headers("Content-Type: application/json")
  65.     fun getUserList() : Single<UserListResponse>
  66. }
  67.  
  68. // User Response
  69. data class UserListResponse(
  70.     @SerializedName("data")
  71.     val users : List<UserItem>
  72. ) {}
  73.  
  74. data class UserItem(
  75.     @SerializedName("id")
  76.     val userId: Int,
  77.  
  78.     @SerializedName("email")
  79.     val userEmail: String,
  80.  
  81.     @SerializedName("first_name")
  82.     val userFirstName: String,
  83.  
  84.     @SerializedName("last_name")
  85.     val userLastName: String,
  86.  
  87.     @SerializedName("avatar")
  88.     val userImgUrl: String
  89. ){}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement