2017-04-04 8 views
0

を、私は以下のように見える私のViewRxBinding2ありますRxBinding2チェーンは、呼び出し - SearchViewQueryText

return discogsService.getSearchResults(searchTerm, mContext.getString(R.string.token)) 
       .subscribeOn(Schedulers.io()) 
       .flatMapIterable(RootSearchResponse::getSearchResults) 
       .observeOn(Schedulers.io()) 
       .flatMap(searchResult -> 
       { 
        if (searchResult.getType().equals("release")) 
        { 
         Log.e("DiscogsInteractor", "In release"); 
         return discogsService.getRelease(searchResult.getId(), mContext.getString(R.string.token)); 
        } 
        else if (searchResult.getType().equals("artist")) 
        { 
         Log.e("DiscogsInteractor", "In artist"); 
         return discogsService.getArtist(searchResult.getId(), mContext.getString(R.string.token)); 
        } 
        Log.e("DiscogsInteractor", "EmptyObject"); 
        return new EmptyObject(); 
       }); 

I:

@Override 
public Observable<SearchViewQueryTextEvent> searchIntent() 
{ 
    return RxSearchView.queryTextChangeEvents(searchView) 
      .debounce(500, java.util.concurrent.TimeUnit.MILLISECONDS) 
      .filter(searchViewQueryTextEvent -> searchViewQueryTextEvent.queryText().length() > 2); 
} 

私はその後、呼び出したいメソッドを次のようになりますこれを私のPresenterに設定して、反応的にメソッドを呼び出すようにしてください。私は私のプレゼンターに自分自身で下記呼び出すと、それが正常に動作します:

mInteractor.searchDiscogs(searchQuery) 
    .subscribe(o -> Log.e(TAG, o.toString())); 

しかし、私はRxBindingが、その後SearchViewに入力して上記のメソッドを呼び出すことをリンクアップに苦労しています。ここで私が試したものです:

CompositeDisposable disposable = new CompositeDisposable(); 

disposable.add(mView.searchIntent() 
      .subscribeWith(new DisposableObserver<SearchViewQueryTextEvent>() 
      { 
       @Override 
       public void onNext(SearchViewQueryTextEvent searchViewQueryTextEvent) 
       { 
        mInteractor.searchDiscogs(searchViewQueryTextEvent.toString()).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<Object>() 
        { 
         @Override 
         public void onSubscribe(Disposable d) 
         { 
          Log.e(TAG, "test"); <--- ObservableObserveOn 
         } 

         ... 

         @Override 
         public void onComplete() 
         { 
          Log.e(TAG, "test"); 
         } 
        }); 
       } 

       ... 

onNext()が正しく呼び出されますが、searchDiscogs(...)に渡すときには、.flatMap(...)(ただし、内部の)ラインまで実行され、その後、onSubscribe(...)ObservableObserveOnを返します。

私には何が欠けていますか?

答えて

0

mInteractor.searchDiscogs(searchViewQueryTextEvent.toString())

mInteractor.searchDiscogs(searchViewQueryTextEvent.queryText().toString())

されている必要があります
関連する問題