我在edittext上使用 TextChangeListener ,并在 afterTextChanged() 上调用了一个函数,该函数查询firestore集合(“用户”)中的可用用户名。
现在的问题是,如果用户在编辑文本中缓慢键入内容,那么就没有问题了。该代码工作正常。但是,如果用户键入速度很快,则侦听器会跳过某些结果,或者未按触发的顺序接收到结果,因此在edittext中使用最终用户名的结果不是最佳选择。该如何解决?
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.
}
}