public Observable<Void> onFabClicked() {
return RxView.clicks(a_button);
}
{
view.onOutBoundBtClicked()
.observeOn(computationScheduler)
.map(new Func1<Void, ViewModelAction>() {
@Override public ViewModelAction call(Void aVoid) {
return new OutboundInputFieldTappedAction();
}
}).mergeWith(view.onFabClicked().flatMap(new Func1<Void, Observable<ListOfResult>>() {
@Override
public Observable<ListOfResult> call(Void avoid) {
return listRepository.getListResult("UK",
"en-GB",
).toObservable();
}
}).map(new Func1<ListOfResult, ViewViewModelAction>() {
@Override
public ViewViewModelAction call(ListOfResult ListOfResult) {
return new ListOfResultsReceivedAction(ListOfResult);
}
}))
.mergeWith(view.onFabClicked()
.observeOn(computationScheduler)
.map(new Func1<Void, ViewModelAction>() {
@Override
public ViewModelAction call(Void aVoid) {
return new SearchPanelAnimationAction();
}
}))
我有一个来自RxView.clicks(a_button)的observable1,如何从这个点击observable1创建另一个observable2,然后将observable1和observable2发送给同一个订阅者?我尝试了将observable1转换为ovservable2的flatmap,但是从未听过observalbe1,代码是
{
view.onOutBoundBtClicked().observeOn(computationScheduler).map(new Func1() {
@Override
public ViewModelAction call(Void aVoid) {
return new OutboundInputFieldTappedAction();
}
}).mergeWith.
,为什么我总是返回一个XXXAction,我将更改viewModel中的一些字段,我将使用
.withLatestFrom(viewModels, new Func2() {
@Override
public ActivityViewModel call(ViewModelAction action, ActivityViewModel activityViewModel) {
return action.modifyViewModel(activityViewModel);
}
所以当viewmodel中的某些内容发生变化时,我会发出一个事件并做一些事情,谢谢你们。
答案 0 :(得分:1)
您需要创建一个共享的可观察字段,并将其公开,而不是直接返回RxView.clicks()
。
Observable<Void> fabClicks;
public void onCreate(Bundle bundle) {
...
fabClicks = RxView.clicks(a_button).share();
}
public Observable<Void> onFabClicked() {
return fabClicks;
}