2016-10-26 16 views
0

イメージをObservableとして返す方法のAndroidアプリケーションがあります。 button.setDrawable(Drawable)で使用するには、このイメージが必要です。だから私は単純なDrawableタイプが必要です。このreturn文からこのようなイメージを得るには? Drawableのが観測可能で放出されるまで、これはブロックしますObservable <Drawable> to simple Drawable

obs.toBlocking().first()

:あなたの観測可能と仮定すると

答えて

3

だから私は単純なDrawable型が必要です。このようなイメージを得るには return statement?

あなたはObservableを購読する必要があります。 Subscribe#onNextは、Drawableをパラメータとして受け取ります。 UiスレッドからsetButtonに電話する必要があることに注意してください。したがって、正しいスレッド(UIスレッド)を観察すること(observeOn)を覚えておいてください。

編集

drawableObservable 
    .observeOn(AndroidSchedulers.mainThread()) 
    .subscribe(new Subscriber<Drawable>() { 
     @Override 
     public void onCompleted() { 
     } 

     @Override 
     public void onError(Throwable e) { 
     } 

     @Override 
     public void onNext(Drawable drawable) { 
     } 
}); 

またはラムダ

drawableObservable 
     .observeOn(AndroidSchedulers.mainThread()) 
     .subscribe(button::setBackground, Throwable::printStackTrace); 
+0

サンプルコードスニペットを親切に共有できますか? –

+0

@RafałPiekara、done。見てください – Blackbelt

+0

ありがとう、もう1つの質問。 '' .subscribe(drawable-> radioButton.setCompoundDrawablesWithIntrinsicBounds(null、null、drawable、null));)で実装すると、 ''画像はButtonがチェックされている場合のみ表示されます。この画像を常に表示したい。 –

-1

名前obsです。

また、ブロック可能ではなく、オブザーバブルから放出されるとすぐにDrawableを取得するには、subscribe()を使用します。

setDrawable()を呼び出す前に観察可能な状態になるまでブロックする場合は、toBlockingを使用します。観察可能な終了がコールバックとして終了するたびに発生させたい場合は、subscribe

+0

とそれはオブジェクトをブロックに観測を回すために悪い形です。 –

+0

これは当てはまりません。ユースケースによって異なります。あなたが結果を待ってからそれを返す必要があるケースはたくさんあります。 – Malt

関連する問題