在我的界面中,我有一个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
?
答案 0 :(得分:3)
做这样的事
RxView.clicks(button)
.withLatestFrom(RxRadioGroup.checkedChanges(radioGroup_timer), (click, checked) -> checked)
.map(...)
withLatestFrom 将仅从 checkedChanges 流中获取LATEST元素,而 flatMap 将创建新的Observable,它将从此流中发出所有项目