获取 RxJava Observable 的当前值
Get current value of RxJava Observable
在我的 UI 中,我有一个 RadioGroup
,其中有 3 个 RadioButtons
和一个 "normal" Button
。
当用户点击 Button
我想阅读选定的 RadioButton
以对其进行处理。
RxView.clicks(button)
.flatMap(x -> RxRadioGroup.checkedChanges(radioGroup_timer))
.map(view -> {
switch (view) {
case R.id.radioButton_10sec_timer:
return 10;
case R.id.radioButton_20sec_timer:
return 20;
default:
return DEFAULT_TIMER;
}
})
.subscribe(duration -> Timber.i("duration: %,d",duration));
它到目前为止有效,但现在每次用户选择另一个 RadioButton
我都会收到一条新的日志消息。
有没有办法在不订阅更改的情况下读取当前选择的 RadioButton
?
像这样做
RxView.clicks(button)
.withLatestFrom(RxRadioGroup.checkedChanges(radioGroup_timer), (click, checked) -> checked)
.map(...)
withLatestFrom 将仅从 checkedChanges 流中获取最新元素,并且 flatMap 将创建新的 Observable,它将从这个流中发出所有项目
在我的 UI 中,我有一个 RadioGroup
,其中有 3 个 RadioButtons
和一个 "normal" Button
。
当用户点击 Button
我想阅读选定的 RadioButton
以对其进行处理。
RxView.clicks(button)
.flatMap(x -> RxRadioGroup.checkedChanges(radioGroup_timer))
.map(view -> {
switch (view) {
case R.id.radioButton_10sec_timer:
return 10;
case R.id.radioButton_20sec_timer:
return 20;
default:
return DEFAULT_TIMER;
}
})
.subscribe(duration -> Timber.i("duration: %,d",duration));
它到目前为止有效,但现在每次用户选择另一个 RadioButton
我都会收到一条新的日志消息。
有没有办法在不订阅更改的情况下读取当前选择的 RadioButton
?
像这样做
RxView.clicks(button)
.withLatestFrom(RxRadioGroup.checkedChanges(radioGroup_timer), (click, checked) -> checked)
.map(...)
withLatestFrom 将仅从 checkedChanges 流中获取最新元素,并且 flatMap 将创建新的 Observable,它将从这个流中发出所有项目