获取RxJava Observable的当前值

时间:2016-09-26 11:02:34

标签: android rx-java rx-android rx-binding

在我的界面中,我有一个RadioGroup,其中包含3个RadioButtons和一个“正常”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

1 个答案:

答案 0 :(得分:3)

做这样的事

RxView.clicks(button)
      .withLatestFrom(RxRadioGroup.checkedChanges(radioGroup_timer), (click, checked) -> checked)
      .map(...)

withLatestFrom 将仅从 checkedChanges 流中获取LATEST元素,而 flatMap 将创建新的Observable,它将从此流中发出所有项目