可观察<drawable>到简单的Drawable

时间:2016-10-26 14:51:50

标签: java android rx-java

我有Android应用程序,其方法是将图像作为Observable返回。我需要这个图像在button.setDrawable(Drawable)中使用它。所以我需要简单的Drawable类型。如何从这个return语句中获得这样的图像?

2 个答案:

答案 0 :(得分:3)

  

所以我需要简单的Drawable类型。如何从这个获得这样的图像   退货声明?

您必须订阅ObservableSubscribe#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