在我的用户界面中,我有一个RadioGroup
和一个“正常”的RadioButtons
。
当用户单击Button
时,我想读取所选的Button
以对其进行处理。
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,它将从该流中发出所有项