데이터바인딩이란?
findViewById 함수를 사용하면 실시간으로 모든 리소스 트리 를 뒤져서 해당 데이터를 찾아가야 한다.
➡ 실시간이라면 실행도중에 발생하는 일이라 프로그램의 수행이 느리게 된다 🔽
이런 이유로 데이터 바인딩을 사용하는 것이 좋다.
미리 바인딩 시켜두고 직접 참조 하게 된다면 일일이 찾아서 할 필요가 없으니 검색 오버헤드가 상당히 줄어들게 된다.
대략적인 데이터 바인딩 동작 이미지 🔽
모듈(app) 수준 gradle에서 databinding 값을 true로 설정해준다.
dataBinding{
enabled = true
}
layout 태그로 전체를 감싸준다.
private lateinit var binding: ActivityMainBinding
만약 LoginActivity 라면 ~ : ActivityLoginBinding 이라고 써야 된다.
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
setContentView(R.layout.activity_main) 코드는 삭제해도 된다.
private lateinit var binding: FragmentHomeBinding
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_home, container, false)
return inflater.inflate(R.layout.fragment_home, container, false) 대신
return binding.root 으로 적어준다.
Module(app)수준의 gradle 파일의 plugins에
id 'kotlin-android-extensions'
이 코드만 추가해주면 id로 컴포넌트에 바로 접근가능하다.