RxBinding icon indicating copy to clipboard operation
RxBinding copied to clipboard

RxView not emitting focusChanges for SearchViews

Open neteinstein opened this issue 7 years ago • 1 comments

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.

neteinstein avatar May 17 '17 15:05 neteinstein

+1

tallnato avatar May 17 '17 16:05 tallnato