Лямбда с параметром в котлине - PullRequest
0 голосов
/ 02 октября 2019

Я хочу написать TextWatcher для нескольких EditText с. В любом из них я хочу присвоить EditText значение переменной. Например:

var variable: String? = null

private inner class CodeTextWatcher : TextWatcher {
    override fun afterTextChanged(s: Editable?) {
        variable = s?.toString()
    }

    override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
    }

    override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
    }
}

Для нескольких EditText s я хочу написать что-то вроде:

private inner class CodeTextWatcher(private val method: (String?) -> Unit) : TextWatcher {
    override fun afterTextChanged(s: Editable?) {
        method(s?.toString())
    }

    override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
    }

    override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
    }
}

и назвать это:

textWatcher1 = CodeTextWatcher {variable1 = s}
textWatcher2 = CodeTextWatcher {variable2 = s}

Но я не могунапишите s здесь и хотите получить доступ к s из afterTextChanged(s: Editable?). Возможно ли это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...