본문 바로가기
IT/Android

안드로이드 데이터바인딩

by sgoho01 2019. 12. 1.

데이터 바인딩

  • xml의 뷰를 찾을 떄 편리한 방법으로 찾을수 있다.
  • 설정방법
    • build.gradle (Module: app) 에서 옵션을 추가한다.

      android {     ...     dataBinding {         enabled = true     } }

    • 화면 xml에 상단에 <layout> 추가

      
      

      <?xml version="1.0" encoding="utf-8"?> <layout> // 추가 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     xmlns:app="http://schemas.android.com/apk/res-auto"     tools:context=".login.Login2Activity">

      ... </androidx.constraintlayout.widget.ConstraintLayout>

      </layout>

    • view를 초기화 할때 기존 코드보다 간결하게 사용할 수 있다,

      • 기존 코드

        class LoginActivity : AppCompatActivity() {     // 버전을 보여주는 텍스트뷰     lateinit var versionTextVIew: TextView

        override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) versionTextVIew = findViewById(R.id.tvVersion) versionTextVIew.text = "(v${BuildConfig.VERSION_NAME})" }

        }

      • 변경 코드

        class LoginActivity : AppCompatActivity() {     // 데이터바인딩 초기화    lateinit var binding: ActivityLogin2Binding

        override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView(this, R.layout.activity_login) binding.tvVersion2.text = "(v${BuildConfig.VERSION_NAME})" }

        }

      → 기존 방식으로 view를 초기화하여 사용하면 모든 view들의 id를 가져오거나 id 대소문자 구분을 하여 다른 화면의 id를 호출하여 에러가 발생 할 수 있는데 데이터바인딩을 사용하면 해당 화면의 id들만 가져와 에러 발생률을 줄일수 있다.


댓글