Debu Debu - 1 month ago 12
Android Question

Detecting value change using Rxjava

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.

Answer

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 (value + 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****

some useful link: about subject in rx: http://reactivex.io/documentation/subject.html about reactive programming : https://gist.github.com/staltz/868e7e9bc2a7b8c1f754 and about rxjava : https://youtu.be/k3D0cWyNno4