Это то, что я использую с rx java
. Создайте функцию расширения для AutoCompleteTextView
fun AutoCompleteTextView.addRxTextWatcher(): Observable<String?> {
val flowable = Observable.create<String?> {
addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
it.onNext(s?.toString())
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
})
}
return flowable
}
и для AutocompleteTextView
добавьте стратегию отладки. Здесь я добавил время 400 миллисекунд, если в течение 400 мс пользовательский ввод отсутствует, запрос API будет go. изменить время согласно вашему требованию
autocompleteTextView.addRxTextWatcher()
.debounce(400, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe {
if (!TextUtils.isEmpty(it)) {
//DO api request
}
}