Связывание представлений в android с помощью kotlin

В чем разница между двумя приведенными ниже способами привязки представлений в android с помощью kotlin? И какой из них лучше?

TextView tvSelectDistance=findViewById<View>(R.id.tvSelectDistance) as TextView

против

TextView tvSelectDistance=findViewById<TextView>(R.id.tvSelectDistance) 
0
0
607
3

Ответы 3

Вы должны использовать плагин android kotlin ktx, чтобы упростить это еще больше. добавьте это в свой build.gradle: apply plugin: 'kotlin-android-extensions'

когда вы будете использовать этот плагин, вам не нужно будет искать представление самостоятельно, просто сделайте следующее:

// Instead of findViewById<TextView>(R.id.textView)
textView.setText("Hello, world!")

Чтобы узнать больше, следуйте этому URL

По вашим вопросам:

В Android findViewById возвращает View, который нам нужно явно привести к правильному типу (вы делаете это в своем первом подходе).

Во втором подходе вы предоставляете тип TextView для findViewById, поэтому нет необходимости вводить его тип.

В Android findViewById возвращает представление - это уже не так. Начиная с api 26 и выше, он возвращает T, где T - это <T extends View>.
Tim 05.04.2018 12:44

В более старых версиях AndroidfindViewById() определялся как

public View findViewById(@IdRes int id)

поэтому необходимо было привести его к правильному типу.

В текущей версии он определяется как

public <T extends View> T findViewById(@IdRes int id)

который просто неявно приводит найденное представление к вызову.

Таким образом, следующие варианты

TextView tvSelectDistance = findViewById<View>(R.id.tvSelectDistance) as TextView
TextView tvSelectDistance = findViewById<TextView>(R.id.tvSelectDistance)
TextView tvSelectDistance = findViewById(R.id.tvSelectDistance)

технически эквивалентны. Но вместо явного приведения возвращаемого значения вы можете использовать последние два и получить более аккуратный код.

Это должно быть правильным способом:

val selectDistanceText: TextView = findViewById(R.id.tvSelectDistance) 

Другие вопросы по теме