Can we detect if a class member value is getting changed using RxJava?? Say in a class there is a variable var, now can we get notified whenever the value of var changes using RxJava.
You can use something like this:
private final BehaviorSubject<Integer> subject = BehaviorSubject.create();
private Integer value=0;
public Observable<Integer> getUiElementAsObservable() {
return subject;
}
public void updateUiElementValue(final Integer valueAdded) {
synchronized (value) {
if (valueAdded == 0)
return;
value += valueAdded;
subject.onNext(value);
}
}
and subscribe to it like this:
compositeSubscription.add(yourClass.getUiElementAsObservable()
.subscribe(new Action1<Integer>() {
@Override
public void call(Integer userMessage) {
setViews(userMessage,true);
}
}));
you have to create setter for all of your variables that you want something subscribe to their changes and call onNext if change applied.
UPDATE
When an observer subscribes to a BehaviorSubject, it begins by emitting the item most recently emitted by the source Observable
you can see other type of subjects here: http://reactivex.io/documentation/subject.html
some useful link:
about reactive programming : https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
and about rxjava : https://youtu.be/k3D0cWyNno4
http://rxmarbles.com/#distinctUntilChanged
Observable.just("A", "B", "B", "A", "C", "A", "A", "D")
.distinctUntilChanged()
.subscribe(abc -> Log.d("RXJAVA", abc));
A
B
A
C
A
D
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With