Anko получает доступ к значениям в пользовательском интерфейсе из Activity

Я новичок в анко, и мне это уже нравится. Однако я не могу найти способ получить доступ к определенным значениям в моем дизайне пользовательского интерфейса из моей деятельности.

Вот пример:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //setContentView(R.layout.activity_main)
        MainActivityUI().setContentView(this)
    }
}



class MainActivityUI :AnkoComponent<MainActivity> {
    override fun createView(ui: AnkoContext<MainActivity>) = with(ui){
        frameLayout {
            var textDisplay = textView {
                text = "Hello World"
            }.lparams {
                width = wrapContent
                height = wrapContent
                gravity = Gravity.CENTER
            }
        }
    }
}

Допустим, я хочу иметь возможность установить строковое значение для textDisplay из моей MainActivity. Если бы я делал это в xml, я мог бы просто использовать find.View.by.id и использовать setText и дело будет сделано. Однако я не могу найти никакого решения для этого в anko.

Я прочитал из другого post другого stackoverflow, что я могу использовать lateinit var, чтобы объявить глобальную переменную, а затем получить к ней доступ из любого места. Но тогда это единственный способ сделать это?

Я имею в виду, конечно, что все мои коды функций пользовательского интерфейса должны быть внутри активности пользовательского интерфейса. Но это станет очень грязным, если проект станет больше, и я пытаюсь отделить свой дизайн пользовательского интерфейса от кода моей функции.

Любая помощь будет признательна. Спасибо

редактировать 1: изменено на var для изменяемого действия


person fireboy0526    schedule 27.10.2018    source источник
comment
Честно говоря, макеты anko — хорошая вещь для небольших макетов, таких как диалоги, но дизайн xml превосходит его во всех других случаях использования. От дизайнера до поддержки разных размеров экрана и повторного использования макетов — это просто лучше. Кроме того, с kotlin-android-extensions использовать его очень просто. Также это способствует лучшему разделению дизайна и бизнес-логики. И да, lateinit var отлично подходит для того, что вы делаете.   -  person leonardkraemer    schedule 27.10.2018
comment
Спасибо за ваш ответ. Если lateinit var — единственное решение, я могу пока вернуться к xml.   -  person fireboy0526    schedule 27.10.2018