Загрузка фото с рисунком MVP - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь загрузить растровое изображение с помощью Picasso и rxjava2 в шаблоне mvp.Я не получаю растровое изображение, пользовательская фотография не обновляется.

Модель:

override fun downloadPhoto(url: String): Single<Bitmap> = Single.create {
        try {
            if (!it.isDisposed) {
                val bitmap: Bitmap = Picasso.get().load(url).get()
                it.onSuccess(bitmap)
            }
        } catch (e: Throwable) {
            it.onError(e)
        }
    }

Presenter

override fun getPhoto() {
    auth.rxGetCurrentUser().subscribe { url = it.photoUrl.toString() }
    dashboardFragmentModel.downloadPhoto(url).subscribe ({ it -> v.setUserPhoto(it)},
            {error -> Log.d("Photo download error", error.message)})
}

Просмотр (фрагмент)}

override fun setUserPhoto(bitmap: Bitmap) {
    rootView.userPhoto.setImageBitmap(bitmap)
}

1 Ответ

0 голосов
/ 01 февраля 2019

Возможно url переменная не инициализируется при попытке использовать метод downloadPhoto.

Попробуйте это:

override fun downloadPhoto(url: String): Observable<Bitmap> = Observable.fromCallable {
    return@fromCallable Picasso.get().load(url).get()
}

override fun getPhoto() {
    auth.rxGetCurrentUser()
            .flatMap {
                val url = it.photoUrl.toString()
                return@flatMap dashboardFragmentModel.downloadPhoto(url)
                              .subscribeOn(Schedulers.io())
            }
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(
                    { it -> v.setUserPhoto(it) },
                    { error -> Log.d("Photo download error", error.message) })
}
...