2017-05-02 2 views
0

私はRx2Animationsライブラリを使用しようとしていますが、サンプルではLambda変数を使用しています。だから、普通のコードでそのラムダをどのように拡張するのかよく分かりません。このラムダメソッドの拡張コードは何ですか?

例:

package oxim.digital.rx2animations.colorpicker; 

import java.util.concurrent.TimeUnit; 

import io.reactivex.android.schedulers.AndroidSchedulers; 
import io.reactivex.disposables.Disposable; 

public final class ColorPickerPresenter extends BasePresenter<ColorPickerContract.View> implements ColorPickerContract.Presenter { 

    @Override 
    public void refreshView() { 
     final ColorPickerContract.View view = getNullableView(); 
     if (view == null) { 
      return; 
     } 

     final Disposable animationDisposable = view.setupInitialAnimation() 
       .delay(500, TimeUnit.MILLISECONDS) 
       .observeOn(AndroidSchedulers.mainThread()) 
       .concatWith(view.startInitialAnimation()) 
       .subscribe(this::onAnimationEnd, Throwable::printStackTrace); 

     addSubscription(animationDisposable); 
    } 

    private void onAnimationEnd() { 

    } 

} 

Insideは、メソッドをサブスクライブラムダを表示されます。
private void onAnimationEnd(EmittedObject o)

は、最初のラムダはonAnimationEndメソッドを実行onNext()ハンドラ、this::onAnimationEnd()があるメソッドの参照である、あなたはonNextは、いくつかのオブジェクトを発するよう、ここでエラーをコンパイルする必要があり、その方法は、マッチングのparamを持っている必要があります

答えて

1

ありがとうございました (このサンプルコードではEmittedObjectですが、Observableが発行する実際のオブジェクトタイプである必要があります)。
2番目のラムダ・パラメータはonError()通知ハンドラです。これはメソッド参照であり、今度はThrowable.printStackTrace()メソッドになります。

は、一般的に言って、IDE(アンドロイドStudioは)あなたの親友である、あなたはそれが自動選択したシグネチャに基づいてコードを生成させることができます)

final Disposable animationDisposable = view.setupInitialAnimation() 
      .delay(500, TimeUnit.MILLISECONDS) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .concatWith(view.startInitialAnimation()) 
      .subscribe(new Consumer<EmittedObject>() { 
       @Override 
       public void accept(@NonNull EmittedObject o) throws Exception { 
        onAnimationEnd(o); 
       } 
      }, new Consumer<Throwable>() { 
       @Override 
       public void accept(@NonNull Throwable throwable) throws Exception { 
        throwable.printStackTrace(); 
       } 
      }); 
+0

ありがとうございました@yosriz – MAOL

関連する問題