Open neteinstein opened 7 years ago
Observable<Boolean> mSearchFocusObs = RxView .focusChanges(mViewBuilder.getSearchView()) .share(); DisposableObserver<Boolean> mSearchStateDisposable = mSearchFocusObs .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(getSearchFocusObserver()); private DisposableObserver<Boolean> getSearchFocusObserver() { return new DisposableObserver<Boolean>() { @Override public void onNext(Boolean isFocused) { Log.d("Test", "getSearchFocusObserver", "Focus? " + isFocused); } @Override public void onError(Throwable e) { Log.e("Test", "getSearchFocusObserver", "Error doing search"); } @Override public void onComplete() { Log.d("Test", "getSearchFocusObserver", "Focus!!!"); } }; }
This is being called only once, when the Activity is opened:
D/TestApplication: TestActivity getSearchFocusObserver Focus? false
After it's never called.
For what I digged, it's due to SearchView not reacting correctly to mySearchView.setOnFocusChangeListener()
mySearchView.setOnFocusChangeListener()
but only to
mySearchView.setOnQueryTextFocusChangeListener()
So my suggestion would be to either validate the type of View and then use the different method.. or have RxSearchView binding with focus option.
+1
This is being called only once, when the Activity is opened:
D/TestApplication: TestActivity getSearchFocusObserver Focus? false
After it's never called.
For what I digged, it's due to SearchView not reacting correctly to
mySearchView.setOnFocusChangeListener()
but only to
mySearchView.setOnQueryTextFocusChangeListener()
So my suggestion would be to either validate the type of View and then use the different method.. or have RxSearchView binding with focus option.