Я заметил, что синтетические свойства Kotlin Android Extensions в некоторых случаях работают несколько странно. Использование их в моих действиях пока не доставило никаких проблем, но в держателях представления он просто продолжает вызывать findViewById()
вместо _$_findCachedViewById()
под капотом. Обратите внимание, что я использую новейшую версию Android Studio с новейшими плагинами (и новейшей версией Kotlin).
Итак, имея такой кусок кода:
class Holder(override val containerView: View) :
RecyclerView.ViewHolder(containerView), LayoutContainer {
fun bind() {
containerView.my_text_view.text = "Hello Stackoverflow!"
itemView.my_another_view.text = "Foo"
}
}
Результаты для меня в следующем коде на Java:
TextView var10000 = (TextView)this.getContainerView().findViewById(id.my_text_view);
...
var10000 = (TextView)var1.findViewById(id.my_another_view);
...
Насколько я понимаю, это не имеет ничего общего с кэшированием представлений, так что это проблема. Самое интересное, что методы _$_findCachedViewById()
и _$_clearFindViewByIdCache()
делают генерацию в коде, но не используются.
Следующая проблема сохраняется даже в проектах, загруженных из Интернета.
Я ошибаюсь, думая, что это какой-то баг? Действительно ли сгенерированный код Java работает так, как задумано?