如何将可观察对象添加到 Integer 对象,以便在每次对象更新时收到通知?在这种情况下,整数 = 0;我希望每次添加示例 1 时都能收到通知。最初我只想记录事件。这是我目前所拥有的,但我被卡住了。
代码:
Subscriber<Integer> num = new Subscriber<Integer>() {
@Override
public void onNext(Integer num) { Log.d("RX", num.toString()); }
@Override
public void onError(Throwable e) { Log.d("RX", "error"); }
@Override
public void onCompleted() { Log.d("RX", "completed"); }
};
Observable.just(number)
/*.doOnNext(new Action1<Integer>() {
@Override
public void call(Integer integer) {
Log.d("RX", "Updated integer" + integer.toString());
}
})*/
/*.flatMap(new Func1<Integer, Observable<?>>() {
@Override
public Observable<?> call(Integer integer) {
Log.d("RX", "Updated integer" + integer.toString());
return Observable.just(number);
}
})*/
.subscribe(num);
最佳答案
在不知道您想要实现什么的情况下,很难给出最佳答案,但您可以按照以下方式实现一个 ObservableInteger
类:
public class ObservableInteger {
private Integer value;
private PublishSubject<Integer> subject = PublishSubject.create();
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
subject.onNext(value);
}
public Observable<Integer> getObservable() {
return subject.asObservable();
}
}
然后您就可以订阅了:
ObservableInteger obInt = new ObservableInteger();
Subscription s = obInt
.getObservable()
.subscribe(
integer -> {
// each time a new value is set
// it will be emitted here
},
Throwable::printStackTrace
);
关于java - RXjava 实现对象更新的可观察对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41707043/