DataBinding

맥모닝·2024년 1월 18일
0

Android

목록 보기
3/6

DataBinding

  • ViewBinding이 제공하는 기능 뿐만 아니라, UI 요소와 데이터를 프로그램적 방식으로 연결하지 않고, 선언적 형식으로 결합할 수 있게 도와주는 라이브러리이다.

ViewBinding이 제공하는 기능?

  • 레이아웃 파일과 코드 간에 일치하지 않아 발생하는 문제를 컴파일 타임에 확인하며, 뷰의 직접 참조를 제공한다. 그래서 런타임 오류를 줄이고, Null Safety와 Type Safety를 제공하여 안정성을 높인다.

DataBinding을 사용하면 좋은 점

  • 뷰를 참조하거나 UI 업데이트를 위해 별도의 코드를 작성할 필요가 없어 코드가 더 간결해진다.
  • UI와 관련된 로직이 XML 레이아웃 파일에 직접 표현되므로, UI와 비즈니스 로직이 분리된다. (단방향 데이터 바인딩)
<data>
  <variable
      name="viewModel"
      type="com.example.UserViewModel" />
</data>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{viewModel.user.name}" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Update Age"
    android:onClick="@{() -> viewModel.updateUserAge(30)}" />
  • 양방향 데이터 바인딩도 지원하여 사용자의 입력이 모델에 반영되고, 모델의 변경이 자동으로 UI에 반영된다.
<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@={viewModel.user.name}" />

레이아웃 표현식?

  • 레이아웃 파일에서 변수나 바인딩 표현식 등을 사용하여 UI 구성 요소에 동적으로 데이터를 바인딩하는데 사용된다.
    • 표현식 : 데이터를 가공하거나 특정 기능을 구현하기 위해 사용되는 식

단방향 데이터 바인딩?

  • UI가 데이터의 변화를 반영하지만, UI의 사용자 입력이 직접적으로 데이터 모델에 반영되지 않는다.
    • 즉, 데이터 모델의 변경이 UI에 반영되는 한 방향으로의 데이터 흐름을 의미한다.

양방향 데이터 바인딩의 단점

  • UI가 데이터 모델에 직접적으로 영향을 미치게 되면 UI와 데이터 모델 사이의 의존성이 높아진다. 따라서 데이터 모델이 UI 로직에 의해 변경될 가능성이 높아지고, 이로인해 예기치 않은 부수 효과가 발생할 수 있다.
  • 데이터의 변경이 어디에서 발생했는지 파악하기 어려워질 수 있다. 즉, 디버깅이 어려워질 수 있다.

UI와 데이터 모델 간의 의존성이 높아지면 안되는 이유

  • 새로운 기능을 추가하거나 기존 코드를 수정할 때, 코드를 변경하기 어려워질 수 있다.
    • UI와 데이터 모델을 동시에 변경해야 하는 경우도 생길 수 있다.
  • 다른 UI에서 동일한 데이터 모델을 사용하기 어려워져 코드의 재사용성이 감소한다.

viewBinding vs dataBinding

  • viewBinding은 어노테이션을 처리하는 과정이나 태그가 붙은 XML 레이아웃 파일이 필요 없기 때문에 dataBinding보다 컴파일 속도가 더 빠르다.
  • dataBinding은 XML 레이아웃 파일에서 동적 UI 콘텐츠를 직접 선언하거나, 양방향 데이터 바인딩을 사용하는 것을 지원한다.
profile
필요한 내용을 공부하고 저장합니다.

0개의 댓글