Я хочу улучшить синтаксис этой функции расширения, но я не знаю, как это сделать.
Моя идея состоит в том, чтобы сделать обертку из TextWatcher
, где я собираюсь использовать только метод onTextChanged()
.
Я бы хотел чистое решение вроде
view.setOnClickListener{}
.
Это мой текущий код:
import android.text.Editable
import android.text.TextWatcher
import android.widget.EditText
interface OnTextChangedListener {
fun onTextChanged(charSequence: CharSequence?, start: Int, before: Int, count: Int)
}
fun EditText.setOnTextChangedListener(listener: OnTextChangedListener) {
this.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(charSequence: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(charSequence: CharSequence?, start: Int, before: Int, count: Int) {
listener.onTextChanged(charSequence, start, before, count)
}
override fun afterTextChanged(editable: Editable?) {
}
})
}
Когда я звоню из другого класса, я делаю что-то вроде этого:
et.setOnTextChangedListener(object : OnTextChangedListener {
override fun onTextChanged(charSequence: CharSequence?, start: Int, before: Int, count: Int) {
foo()
}
})
Это работает, но я бы хотел что-нибудь почище ... с лямбдой, наверное.
Есть идеи? : -)