我有Android应用程序,其方法是将图像作为Observable返回。我需要这个图像在button.setDrawable(Drawable)中使用它。所以我需要简单的Drawable类型。如何从这个return语句中获得这样的图像?
答案 0 :(得分:3)
所以我需要简单的Drawable类型。如何从这个获得这样的图像 退货声明?
您必须订阅Observable
。 Subscribe#onNext
将收到Drawable
作为参数。请注意,您必须从Ui线程中调用setButton
。所以记得要观察(observeOn
)到正确的线程(UI线程)。
修改
drawableObservable
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Drawable>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Drawable drawable) {
}
});
或与lambda
drawableObservable
.observeOn(AndroidSchedulers.mainThread())
.subscribe(button::setBackground, Throwable::printStackTrace);
答案 1 :(得分:-1)
假设您的observable是名称obs
:
obs.toBlocking().first()
这将阻塞,直到可观察者发出Drawable。
或者,使用subscribe()
在可观察者发出Drawable时立即获取Drawable,而不会阻塞。
如果要在调用setDrawable()
之前阻止observable,请使用toBlocking
。如果您希望它在observable完成时发生(作为回调),subscribe