Я использую TextChangeListener для edittext и вызываю функцию на afterTextChanged () , которая запрашивает коллекцию firestore (" пользователи ") для доступных имен пользователей в коллекции.
Теперь проблема в том, что если пользователь медленно печатает в тексте редактирования, то проблем нет. код работает нормально. но если пользователь печатает очень быстро, слушатель пропускает некоторые результаты или результаты не принимаются в том порядке, в котором они были запущены, и поэтому результат с конечным именем пользователя в тексте редактирования не является идеальным. Как решить эту проблему?
edittext.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
isUsernameAvailable(s.toString())
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
})
private fun isUsernameAvailable(username:String){
db.collection("users")
//.orderBy("username")
.whereEqualTo("username",username)
.get()
.addOnSuccessListener {documents->
// showing the result if documents with username available or not.
}
}