0
MVVMパターンでRXJavaを学習しようとしています。私はリストを放出しているが、何とかそれは観察者のonNextイベントで捕まるされていないSearchViewModel.handleSearchTopic()を呼び出していますいくつかの検索イベントでRxAndroid - BehaviorSubjectがonNextで発光しない
:ここ
は私が実装しようとしているシナリオです。サブスクリプションも正常に行われています。私はいくつかの簡単な間違いをしていると思います。また、このユースケースを実装する上でより良い方法がありますか?
SearchViewModel.java
private final BehaviorSubject<List<Topic>> topicList = BehaviorSubject.create();
public void handleSearchTopic() {
List<Topic> list = //getsomehow;
topicList.onNext(list);
}
public Observable<List<Topic>> getTopicListObservable() {
return topicList.asObservable();
}
Fragment.java
@NonNull
private CompositeSubscription subscription;
@NonNull
private SearchViewModel searchViewModel;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
searchViewModel = new SearchViewModel();
bind();
}
@Override
public void onDestroy() {
unBind();
super.onDestroy();
}
private void bind() {
subscription = new CompositeSubscription();
subscription.add(searchViewModel.getTopicListObservable()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<List<Topic>>() {
@Override
public void onCompleted() {
//do something
}
@Override
public void onError(Throwable e) {
//do something
}
@Override
public void onNext(List<Topic> topics) {
//ideally this should be called when event is emitted but not getting called
}
}));
}
private void unBind() {
subscription.unsubscribe();
}
'topicList.onNext(list)'はこれまでに呼ばれていますか? – tynn
はい、常に呼び出されます。 – bpsingh
あなたのonErrorとonCompleteをログに記録し、それらが呼び出されているかどうか確認してください。これは、エラーを見つけるのに役立ちます。 –