#2 View Binding


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

Activity состоят из 2 частей — xml шаблон и Kotlin класс. В xml мы визуально размещаем виджеты, то есть элементы экрана. А в Kotlin классе мы прописываем для этих виджетов функционал.

Если Вы не читали предыдущую публикацию то переходите к ознакомлению.

Например у нас в нашем главном Activity — MainActivity размещено текстовое поле. В Kotlin классе этого Activity мы хотим через код установить текст в это текстовое поле.

Но возникает вопрос, как нам связаться с определенным виджетом в Xml шаблоне.

View Binding — основа для всех тех кого интересует андроид разработчик обучение с нуля бесплатно

Раньше для этого использовался метод findViewByID() — но он тормозил работу приложения. На его смену пришел Data Binding и одно время он отлично справлялся.

Сейчас используется усовершенствованный DataBinding — View Binding.

Итак как же нам его подключить ?

Мы открываем папку Gradle Script и переходим в файл build.gradle(Module:Foundament.app)

После чего вот сюда

вставляем этот код

После чего у Вас справа появится ссылка для синхронизации проекта — кликаем по ней.

В итоге в вашем проекте синхронизируются изменения которые мы внесли.

Далее переходим в класс нашего Activity. В нашем классе мы видим метод onCreate — он нужен для наполнения нашего экрана версткой из соответствующего xml шаблона нашего activity — то есть все виджеты которые мы разместили в xml шаблоне этого activity — активизируются и заполняют экран именно в этом методе.

Этот метод вызывается тогда когда мы переходим в это activity. Так как наше activity является стартовым — то этот метод вызывается при запуске приложения.

Перед этим методом нам нужно создать объект байндинга. Для этого мы создаем объект байндинга указываем его тип как ActivityMainBinding

и делаем это объект нулабельным — то есть изначально этот объект будет хранить значение null.

После этого внутри метода onCreate, после super.onCreate(savedInstanceState) мы инициализируем объект байндинга как экземпляр класса ActivityMainBinding, после чего вызываем у нашего объекта метод inflate — который связывается с нашим xml шаблоном соответствующего класса и превращает все его виджеты в объекты класса View — это необходимо для работы с этими виджетами через язык программирования Kotlin.

Далее мы прописываем метод setContentView(binding?.root). Именно этот метод и отрисовывает внешний вид экрана в соответствии с xml шаблоном. В этот метод мы и передаем наш объект binding и вызываем его метод root — который нам позволит связаться каждым виджетом из xml шаблона через специальный индивидуальный идентификатор(id). То есть root — такая ссылка на xml шаблон.

Теперь мы переходим в xml шаблон и у нашего текстового виджета создаем специальный атрибут id — название может быть любым, но должно быть уникальным и не повторяющимся в этом xml шаблоне.

Подробнее с самой xml версткой мы познакомимся на одном из следующих уроков. Сегодня Вам нужно лишь понимать принцип работы через View Binding.

После того как мы прописали id — возвращаемся в Kotlin класс нашего Activity.

Для примера я покажу работу с текстовым полем и программно задам текст для отображения в этом текстовом поле.

Для того что бы работать с конкретным виджетом мы с начала обращаемся к объекту binding, так как этот объект изначально имеет значение null, указываем вопросительный знак, а затем ставим точку и вызываем наш виджет по id который мы прописали у соответствующего виджета в xml шаблоне. После чего мы вызываем спец атрибут текстового виджета text который должен хранить значение для отображения, ставим оператор присваивания и в кавычках указываем текст для отображения в этом текстовом поле.

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

Итак давайте посмотрим, что же у нас получилось.

Посмотрите в текстовом поле отображается заданный нами текст. Таким образом для того что бы работать с виджетами нам нужно подключить view Binding, настроить Kotlin класс под него, в xml шаблоне виджетам установить индивидуальные идентификаторы и работать в Kotlin классе с этими виджетами через объект binding, используя эти идентификаторы.

Если у нас например не стартовое activity — а скажем activity с названием Catalog, то наш объект view Binding будет относится к классу CatalogBinding.

На сегодня это все, что я хотел Вам рассказать — до встречи на след уроке.