RxAndroid - BehaviorSubject 未在 onNext 上发射

bps*_*ngh 0 java android mvvm rx-java

我正在尝试使用 MVVM 模式学习 RXJava。

这是我试图实现的场景:

在某些搜索事件中,我正在调用 SearchViewModel.handleSearchTopic() ,它正在发出列表,但不知何故它没有被观察者的 onNext 事件捕获。订阅也成功进行。我想我犯了一些简单的错误,请指出。另外,有没有更好的方法来实现这个用例?

搜索视图模型.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();
}
Run Code Online (Sandbox Code Playgroud)

片段.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();
}
Run Code Online (Sandbox Code Playgroud)

bps*_*ngh 5

这是一个愚蠢的错误。我在片段和搜索事件中使用了 SearchViewModel 的不同实例。