Cute Apple
본문 바로가기
개발/Android

[Android] Databinding이란?

by 미댕댕 2022. 8. 2.

DataBinding이란❓

  • 데이터와 뷰를 연결하는 작업을 레이아웃에서 처리할수 있게 해주는 라이브러리(Jetpack)
  • 글루코드를 최소화
  • MVVM 패턴 구현시 LiveData 와 함께 거의 필수적으로 사용
글루코드란?
프로그램의 요구사항 구현에는 기여하지 않지만, 본래 호환성이 없는 부분끼리 결합하기 위해 작동하는 코드

 

장점

  • Databinding을 사용하면 findViewById() 쓰지 않아도 xml에 만든 View들을 자동 생성
  • Data가 바뀌면 알아서 바뀐 Data로 View를 변경가능 (옵저블 사용시)

 

 

databinding 사용기

 

0. gradle 추가

android {
   buildFeatures{
        dataBinding = true
    }
}

 

1. xml 에 <layout>  및 <data> 추가

<?xml version="1.0" encoding="utf-8"?>
<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">
  
    <data>
      <variable
         name="main"
         type="com.mm.mj.MainActivity"/>
    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity">

        <TextView
            android:id="@+id/hello_text_view"
            android:text="Hello!"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
      
        <Button
            android:id="@+id/btn_change"
            android:text="Text Change!"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

    </LinearLayout>
</layout>

 

 

2. Activity 에서 이벤트 추가

class MainActivity : AppCompatActivity() {
    // xml 파일명의 카멜케이스로 자동으로 등록됨
    private lateinit var binding: ActivityMainBinding

    var text = "Hello!"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // binding 세팅
        binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
        // 현재 binding시킨 xml의 variable name
        binding.main = this
        // binding 버튼 클릭 이벤트
        binding.btnChange.setOnClickListener {
            text = "Hello Binding!"
            // Data가 변동될 경우 binding된 View들에 Data 변화를 알려줌
            binding.invalidateAll()
        }
    }
}

 

 

간단한 Databinding 은 이런식으로 진행하고

다음은 LiveData 와 함께 어떤식으로 연동이되는 지 알아봐야겠다

반응형

'개발 > Android' 카테고리의 다른 글

[Android] Swiperefreshlayout 사용기  (0) 2022.08.05
[Android ] AAC란?  (0) 2022.08.04
[Android] Process 생명주기  (0) 2022.08.01
[Android] Layout 종류  (0) 2022.07.31
[Android] Retrofit2 와 OkHttp  (0) 2022.07.30

댓글