개발일지

Android in A..Z - Databinding (수식) 본문

Android (안드로이드)/Databinding

Android in A..Z - Databinding (수식)

강태종 2021. 1. 21. 03:08

Databinding에서 제공하는 수식으로 XML에서 간단한 수식을 처리하여 Java나 Kotlin의 코드를 줄일 수 있고, 코드의 유지보수성을 높일 수 있습니다.


import

Java에서 import와 비슷한 의미로 변수를 선언할 때 사용한다.

    <data>
        <import type="android.view.View" />

        <variable
            name="movie"
            type="com.taetae98.databinding.data.Movie" />

        <variable
            name="onClick"
            type="View.OnClickListener" />
    </data>

bind

include를 사용하여 다른 layout을 포함할 때 다른 layout에 데이터를 결합하는 방법.

=> merge에서는 사용할 수 없다.

<?xml version="1.0" encoding="utf-8"?>
    <layout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:bind="http://schemas.android.com/apk/res-auto">
       <data>
           <variable name="user" type="com.example.User"/>
       </data>
       <LinearLayout
           android:orientation="vertical"
           android:layout_width="match_parent"
           android:layout_height="match_parent">
           <include layout="@layout/name"
               bind:user="@{user}"/>
           <include layout="@layout/contact"
               bind:user="@{user}"/>
       </LinearLayout>
    </layout>

default

데이터를 결합하기 전에 표시할 값을 선택한다.

=> Databinding을 사용하면 Design을 미리 볼 수 없는데 Design을 미리 볼 때도 사용할 수 있다.

 

            <TextView
                android:id="@+id/title"
                android:layout_margin="10dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@{movie.title, default=Title}"
                android:textColor="@color/white"
                android:textSize="30sp"
                android:textStyle="bold"
                app:layout_constraintTop_toBottomOf="@id/poster"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent" />

문자열 리터럴

Databinding에서 문자열을 사용할 때

android:text='@{map["firstName"]}'
android:text="@{map[`firstName`]}"
    

기타

기본적인 산술 연산자, 논리 연산자, 비교 연산자를 제공하고 함수도 호출할 수 있다.

참고 : developer.android.com/topic/libraries/data-binding/expressions?hl=ko


Git (예제코드)

github.com/KangTaeJong98/Example/tree/main/Android/Databinding

 

KangTaeJong98/Example

My Example Code. Contribute to KangTaeJong98/Example development by creating an account on GitHub.

github.com

 

Comments