RxBinding
RxBinding copied to clipboard
RxView not emitting focusChanges for SearchViews
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()
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