Вы должны использовать плагин 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, поэтому нет необходимости вводить его тип.
В более старых версиях 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)
T, где T - это<T extends View>.