0
我想學習與MVVM模式的RXJava。RxAndroid - BehaviorSubject onNext
下面是場景我想實現:
在其發射名單,但不知它是沒有得到在觀察者的onNext事件陷入一些搜索事件我打電話SearchViewModel.handleSearchTopic()。訂閱也成功發生。我想我正在做一些簡單的錯誤,請指出。另外,有沒有更好的方法來實現這個用例?
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,看看他們是否被調用。這可以幫助您找出錯誤。 –