【问题标题】:Get current value of RxJava Observable获取 RxJava Observable 的当前值
【发布时间】:2016-09-26 11:02:33
【问题描述】:

在我的 UI 中,我有一个 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

【问题讨论】:

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


    【解决方案1】:

    做这样的事情

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

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

    【讨论】:

    • 如何订阅广播组中的所有事件以进行表单验证?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 2019-03-19
    • 2019-12-17
    • 1970-01-01
    相关资源
    最近更新 更多