From 3d6469ac9ce67eea5afcda83595d1ccb64515bb7 Mon Sep 17 00:00:00 2001 From: Gavriil Sitnikov Date: Tue, 12 Jul 2016 17:14:48 +0300 Subject: [PATCH] added attached flag field --- .../listing/adapters/BindableViewHolder.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/ru/touchin/roboswag/components/listing/adapters/BindableViewHolder.java b/src/main/java/ru/touchin/roboswag/components/listing/adapters/BindableViewHolder.java index 1286923..d4a8fe4 100644 --- a/src/main/java/ru/touchin/roboswag/components/listing/adapters/BindableViewHolder.java +++ b/src/main/java/ru/touchin/roboswag/components/listing/adapters/BindableViewHolder.java @@ -38,7 +38,7 @@ public class BindableViewHolder extends RecyclerView.ViewHolder implements UiBin @NonNull private final UiBindable baseBindable; @NonNull - private final BehaviorSubject isStartedSubject = BehaviorSubject.create(); + private final BehaviorSubject attachedToWindowSubject = BehaviorSubject.create(); public BindableViewHolder(@NonNull final UiBindable baseBindable, @NonNull final View itemView) { super(itemView); @@ -47,18 +47,22 @@ public class BindableViewHolder extends RecyclerView.ViewHolder implements UiBin @CallSuper public void onAttachedToWindow() { - isStartedSubject.onNext(true); + attachedToWindowSubject.onNext(true); + } + + public boolean isAttachedToWindow() { + return attachedToWindowSubject.hasValue() && attachedToWindowSubject.getValue(); } @CallSuper public void onDetachedFromWindow() { - isStartedSubject.onNext(false); + attachedToWindowSubject.onNext(false); } @NonNull @Override public Observable bind(@NonNull final Observable observable) { - return isStartedSubject + return attachedToWindowSubject .switchMap(isStarted -> isStarted ? observable.observeOn(AndroidSchedulers.mainThread()) : Observable.never()); }