Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // App
- class UserApp : Application() {
- lateinit var userApi: UsersApi
- override fun onCreate() {
- super.onCreate()
- configureRetrofit()
- }
- private fun configureRetrofit() {
- val httpLoggingInterceptor = HttpLoggingInterceptor()
- httpLoggingInterceptor.level = HttpLoggingInterceptor.Level.BODY
- val okHttpClient = OkHttpClient.Builder()
- .addInterceptor(httpLoggingInterceptor)
- .build()
- val retrofit = Retrofit.Builder()
- .baseUrl("https://reqres.in/")
- .client(okHttpClient)
- .addConverterFactory(GsonConverterFactory.create())
- .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
- .build()
- userApi = retrofit.create(UsersApi::class.java)
- }
- }
- // ViewModel
- class UserListViewModel(application: Application) : AndroidViewModel(application) {
- private val compositeDisposable = CompositeDisposable()
- override fun onCleared() {
- compositeDisposable.clear()
- super.onCleared()
- }
- fun fetchUserList(usersApi: UsersApi?) {
- usersApi?.let {
- compositeDisposable.add(
- usersApi.getUserList()
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe({
- }, {
- })
- )
- }
- }
- }
- // Api
- interface UsersApi {
- @GET("./api/users")
- @Headers("Content-Type: application/json")
- fun getUserList() : Single<UserListResponse>
- }
- // User Response
- data class UserListResponse(
- @SerializedName("data")
- val users : List<UserItem>
- ) {}
- data class UserItem(
- @SerializedName("id")
- val userId: Int,
- @SerializedName("email")
- val userEmail: String,
- @SerializedName("first_name")
- val userFirstName: String,
- @SerializedName("last_name")
- val userLastName: String,
- @SerializedName("avatar")
- val userImgUrl: String
- ){}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement