如何在原始观察值平坦化为新的观察值之后再听原始观察值?
问题描述:
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,我如何从这个click observable1创建另一个observable2,然后将observable1和observable2发送给同一用户?我想flatmap该转换observable1到ovservable2但随后observalbe1是从来没有听说过,代码如何在原始观察值平坦化为新的观察值之后再听原始观察值?
{
view.onOutBoundBtClicked().observeOn(computationScheduler).map(new Func1() {
@Override
public ViewModelAction call(Void aVoid) {
return new OutboundInputFieldTappedAction();
}
}).mergeWith.
,为什么我总是返回XXXAction的是,我会改变某些领域的视图模型,我将使用
.withLatestFrom(viewModels, new Func2() {
@Override
public ActivityViewModel call(ViewModelAction action, ActivityViewModel activityViewModel) {
return action.modifyViewModel(activityViewModel);
}
所以,如果有什么改变的viewmodel我会得到一个事件发射和做一些事情,谢谢,伙计。
答
您需要创建一个共享的可观察字段,并公开该字段,而不是直接返回RxView.clicks()
。
Observable<Void> fabClicks;
public void onCreate(Bundle bundle) {
...
fabClicks = RxView.clicks(a_button).share();
}
public Observable<Void> onFabClicked() {
return fabClicks;
}
'我想flatmap该转换observable1到ovservable2但它并不work'添加代码(见[MCVE(https://stackoverflow.com/help/mcve)) – EpicPandaForce
'说明问题。 “它不起作用”不是一个问题陈述。告诉我们预期的行为应该是什么。告诉我们错误信息的确切用词是什么,以及哪一行代码正在生成它。在你的问题的标题中加入一个简短的问题摘要。' – EpicPandaForce
感谢您的评论,我添加了一些代码片段,正如你所看到的,我仍然想在flatmap之后使用onFabClicked observable,我该如何实现它。或任何解决方法,谢谢! – user3201520