Что такое синтаксис объекта: интерфейс в Kotlin? - PullRequest
0 голосов
/ 11 октября 2019

Я новичок в Kotlin и Android.

Я запутался, когда вижу синтаксис при использовании TextWatcher вот так:

editTextSample.addTextChangedListener(object : TextWatcher{
    override fun afterTextChanged(s: Editable) {}

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

    override fun onTextChanged(s: CharSequence, start: Int,
                               before: Int, count: Int) {
        txtView1.setText("Text in EditText : "+s)
    }
})

Можете ли вы объяснить это для меня,Спасибо

Ответы [ 2 ]

1 голос
/ 11 октября 2019

Запись object : TextWatcher просто создает анонимный класс здесь. Это просто kotlin способ его создания. Kotlin дает вам больше методов для реализации TextWatchers.

Вы можете импортировать зависимость androidx.core: core-ktx, которая предоставляет множество полезных функций. Одним из них являются расширения для текстовых наблюдателей. С помощью этого вы можете упростить свой код до:

        editTExt.doOnTextChanged { text, start, count, after -> 
            //Do something here
        }
1 голос
/ 11 октября 2019

EditText класс расширяет TextView класс, который содержит метод с именем addTextChangedListener().

Здесь вы создаете объект класса EditText и вызываете этот метод. Где вам нужно передать объект интерфейса TextWatcher в качестве аргумента.

[Держись .. но мы не можем создать объект интерфейса. Так что здесь мы используем концепцию анонимного класса для этого, проверьте это ].

, и поскольку интерфейс содержит три метода, мы должны переопределить их все. Вот и все.

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