2016-09-26 75 views
4

在我的UI中,我有一個RadioGroup,其中有3個RadioButtons和一個「正常」Button獲取RxJava Observable的當前值

當用戶點擊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而無需訂閱更改?

回答

3

做smthing這樣

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

withLatestFrom將只需要最新元素從checkedChanges流,並flatMap將創造新的觀察的,將發出所有項目從此流

+0

我如何訂閱radiogroup中的所有事件以進行表單驗證? –