#mvvm #kotlin #textwatcher
#mvvm #котлин #textwatcher
Вопрос:
Я хочу получить старое значение EditText с помощью функции beforeTextWatcher . Проблема в том, что когда я пытался получить это старое значение, возвращаемое значение всегда равно null, кто-нибудь, может помочь мне, пожалуйста
val nomTextWatcher: TextWatcher
get() = object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
}
override fun beforeTextChanged(s: CharSequence?, p1: Int, p2: Int, p3: Int) {
userUpdateSignup.setNom(s.toString())
}
override fun onTextChanged(s: CharSequence?, p1: Int, p2: Int, p3: Int) {
if(!s.toString().isEmpty())
userUpdateSignup.setNom(s.toString())
}
}
Ответ №1:
Вы не можете просто использовать TextWatcher, вы должны сохранить значение в свойствах класса, а затем проверить его самостоятельно.
private var myFieldValue : String = ""
[...]
val nomTextWatcher: TextWatcher
get() = object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
}
override fun beforeTextChanged(s: CharSequence?, p1: Int, p2: Int, p3: Int) {
userUpdateSignup.setNom(s.toString())
}
override fun onTextChanged(s: CharSequence?, p1: Int, p2: Int, p3: Int) {
// Here you can check differences or what you want
if(!s.toString().isEmpty())
userUpdateSignup.setNom(s.toString())
// After text changed, you have to store it
myFieldValue = s.toString()
}
}