Skip to content

Instantly share code, notes, and snippets.

@tcw165
Last active April 29, 2018 15:31
Show Gist options
  • Select an option

  • Save tcw165/46dccd6b80ad85f1f1cc74c24cd943ac to your computer and use it in GitHub Desktop.

Select an option

Save tcw165/46dccd6b80ad85f1f1cc74c24cd943ac to your computer and use it in GitHub Desktop.
final class ViewClickObservable extends Observable<Object> {
private final View view;
ViewClickObservable(View view) {
this.view = view;
}
@Override
protected void subscribeActual(Observer<? super Object> observer) {
Listener listener = new Listener(view);
// Most importantly, pass the observer a Disposable
observer.onSubscribe(listener);
view.setOnClickListener(listener);
}
static final class Listener extends MainThreadDisposable
implements OnClickListener {
private final View view;
Listener(View view, Observer<? super Object> observer) {
this.view = view;
}
@Override
protected void onDispose() {
view.setOnClickListener(null);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment