Я использую rxjava в проекте MVVM, и я хочу использовать RxSearchView для поиска, но RxSearchView не работает и не получает строку при вводе текста в поисковом окне на панели инструментов, поэтому я не могу получить данные списка из API для отображения в программе повторного просмотра. это мой код в репозитории. Мой код правильный? а почему нельзя получить данные из searchview?
disposable.add(
publishSubject
.debounce(300, TimeUnit.MILLISECONDS)
.distinctUntilChanged()
.switchMapSingle(object : Function<String, Single<List<Contact>>> {
override fun apply(t: String): Single<List<Contact>> {
return RetrofitContact.contactService
.getContacts(null, t)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
}
}).subscribeWith(getSearchObserve())
)
disposable.add(
RxSearchView.queryTextChanges(searchView)
.debounce(300, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(searchContactsSearchWatcher())
fun searchContactsSearchWatcher(): DisposableObserver<CharSequence> {
return object : DisposableObserver<CharSequence>() {
override fun onComplete() {
}
override fun onNext(t: CharSequence) {
publishSubject.onNext(t.toString())
Log.d(Resource.TAG,"this is onNext for searchview and t =$t")
}
override fun onError(e: Throwable) {
}
}
}
disposable.add(getSearchObserve())
publishSubject.onNext("")
return data