[英]How to observe a boolen field with RxJava
In my class Foo
I have a boolen field. 在我的课堂
Foo
我有一个布尔字段。 When the field changes I will react on this change in my class Bar
How can I implement this with RxJava in Android? 当字段更改时,我将对类
Bar
更改做出反应,如何在Android中使用RxJava实现此操作?
I guess you have to create class Foo
with subject inside 我想你必须创建带有主题的
Foo
类
class Foo {
var booleanField: Boolean = false
set(value) {
field = value
observable.onNext(value)
}
val observable = BehaviorSubject.createDefault(booleanField)
}
Then you have to observe that subject inside Boo
class 然后,您必须在
Boo
类中观察该主题
class Boo(val observable: BehaviorSubject<Boolean>) {
var booleanField: Boolean = false
var disposable: Disposable? = null
fun startObserve() {
disposable?.dispose()
disposable = observable.subscribe {
booleanField = it
}
}
fun finishObserve() {
disposable?.dispose()
disposable = null
}
}
If you have to run it just create Foo and pass it's subject to Boo: 如果必须运行它,只需创建Foo并将其传递给Boo:
val foo = Foo()
val boo = Boo(foo.observable)
boo.startObserve()
foo.booleanField = true //boo is changed to true too
now if you change foo.booleanField
, boo.booleanField
will change too. 现在,如果您更改
foo.booleanField
, boo.booleanField
也将更改。 If you need, you can run startObserve in constructor to start it immidiatly after creating instance. 如果需要,可以在构造器中运行startObserve以在实例创建后立即启动它。 May be you have to create
BehaviorSubject
somewhere else and just pass to both classes using DI. 可能是您必须在其他地方创建
BehaviorSubject
,然后使用DI传递给两个类。 And do not forget to unsubscribe after work is done. 并且,别忘了在工作完成后退订。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.