获取 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,它将从这个流中发出所有项目