@Eugesha1998

Anroid, как записать json используя Retrofit2, RxJava2?

Добрый вечер, столкнулся с такой проблемой, что могу вывести содержимое json'a, но вопрос в том как его записать в переменную?

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({
                        onResponse(it)
                    }, {

                    }
            ))
        }
    }

    private fun onResponse(response: UserListResponse) {

        for (user in response.users) {
            Log.d("user info:", user.userId.toString())
            Log.d("user info:", user.userFirstName)
            Log.d("user info:", user.userLastName)
            Log.d("user info:", user.userEmail)
            Log.d("user info:", user.userImgUrl)
        }
    }
}

6060e2ecee9f4754726532.png
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 2
@foonfyrick
В том месте, где ты все выводишь в логи, присвой это туда, куда тебе нужно.
Ответ написан
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Ретрофит делает асинхронный запрос в сеть на другом потоке. Коллбек выполняется значительно позже, чем код, непосредственно расположенный после вызова. Весь код, который должен выполняться после получения ответа, должен вызываться из коллбека. В твоём случае, он должен находиться внутри цепочки Rx.
fetch должен возвращать Observable/Single, и подписка должна быть в пользовательском коде.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы