ViewBinding과 DataBinding의 차이

차누·2023년 5월 11일
0

JetPack 라이브러리 중 ViewBinding과 DataBinding을 공부하고 있는데 둘의 차이점이 궁금해져 글을 작성하게 되었다.

ViewBinding

ViewBinding은 findViewById의 반복코드의 불편함을 없애주기 위해 만들어졌다.
간단한 예제코드를 보자면

build.gradle

buildFeatures {
viewBinding = true
}
private lateinit var binding : ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {

    super.onCreate(savedInstanceState)
    binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)
    
    }
}

-ViewBinding은 양방향바인딩을 지원하지 않고 뷰만 Binding하여 DataBinding보다 속도가 빠르다.

-Null safety를 할 수 있다

DataBinding

builde.gradle

buildFeatures {
dataBinding = true
}

DataBinding은 xml 파일을 태그로 감싸준다.

<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

  <androidx.constraintlayout.widget.ConstraintLayout
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:id="@+id/dataBinding"
        android:textSize="50dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
    </layout>
    private lateinit var binding: ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = DataBindingUtil.setContentView(this,R.layout.activity_main)
        binding.dataBinding.text = "바뀐 텍스트"
    }

DataBinding은 양방향을 지원한다.
태그를 사용하여 레이아웃을 처리

*** 양방향이란?

데이터 바인딩은 view와 데이터를 다이렉트로 연결할 수 있다는 뜻이다.

profile
to be good programmer

0개의 댓글