私はリアクティブプログラミングの初心者です。そのため、onClick、ontouchなどのイベントからストリームを作成するときに問題が発生します...
誰かが私がこの問題を解決するのを手伝ってくれる?
ありがとう。
あなたはこのようなことをするでしょう:
Observable<View> clickEventObservable = Observable.create(new Observable.OnSubscribe<View>() {
@Override
public void call(final Subscriber<? super View> subscriber) {
viewIWantToMonitorForClickEvents.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (subscriber.isUnsubscribed()) return;
subscriber.onNext(v);
}
});
}
});
// You can then apply all sorts of operation here
Subscription subscription = clickEventObservable.flatMap(/* */);
// Unsubscribe when you're done with it
subscription.unsubscribe();
Androidを使用しているため、rxjava-android
現在はとして知られているcontrib依存関係をすでに含めている可能性がありますioreactivex:rxandroid
。彼らはすでにこれを容易にするためのクラスを持っています。メソッドはViewObservable.clicks
です。そのままお使いいただけます。
Observable<View> buttonObservable = ViewObservable.clicks(initiateButton, false);
buttonObservable.subscribe(new Action1<View>() {
@Override
public void call(View button) {
// do what you need here
}
});
編集:バージョン1.x以降ViewObservable
、多くのヘルパークラスがRxAndroidから削除されています。代わりにRxBindingライブラリが必要になります。
Observable<Void> buttonObservable = RxView.clicks(initiateButton);
buttonObservable.subscribe(new Action1<Void>() {
@Override
public void call(Void x) {
// do what you need here
}
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加