4

在我的用户界面中,我有一个RadioGroupwith 3RadioButtons和一个 "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不订阅更改的情况下读取当前选定的内容?

4

1 回答 1

3

做这样的事

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

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

于 2016-09-26T13:09:20.783 回答