findViewById
를 알 필요가 있다. findViewById
는 레이아웃에 있는 뷰를 리소스 id를 통해 원하는 뷰를 가져올 수 있는 메소드이다.kotlin-android-extensions
가 쓰이기 시작했는데 kotlin-android-extensions
는 findViewById
와 마찬가지로 레이아웃에 있는 뷰를 리소스 id를 통해 원하는 뷰를 가져올 수 있는데 findViewById
다르게 findViewById()를 하지 않고 바로 뷰의 id를 바로 가져올 수 있어 따로 추가 코드를 작성하지 않아 코드가 간결해 집니다.kotlin-android-extensions
가 deprecated가 되었는데 그 이유는 실수할 여지가 매우 많다는 결론에 deprecated가 되었다고 한다. 어떤 부분에서 실수가 되는가 살펴보면 레이아웃의 갯수가 많이 없으면 상관이 없지만 갯수가 많아지면 만약 A, B 레이아웃에 똑같은 TextView에 똑같이 id를 textView라고 지정하면 코틀린 파일에서 textView를 가져오려고 하면 어떤 textView를 가져와야 하는지 혼동이 될 수 있다. 이런 부분에서 실수가 할 여지가 많다고 생각해 deprecated가 된 거 같습니다.ViewBinding
, DataBinding
을 이용해 레이아웃에 있는 뷰를 가져오는 방식을 많이 사용합니다.그래서 ViewBinding
, DataBinding
이 어떤점이 차이가 있는지 블로그에 기록하려 합니다.참고
https://thdev.tech/android/2020/10/07/Remove-kotlinx-synthetic/
https://velog.io/@deepblue/Kotlin-Android-Extensions%EC%9D%B4-deprecated%EB%90%9C-%EC%9D%B4%EC%9C%A0
ViewBinding
은 연결은 레이아웃에 존재하는 View만을 가져올 수 있다.findViewBy
처럼 일일이 View를 가져와 형변환해 변수에 안 넣어줘도 된다.참고
https://developer.android.com/topic/libraries/data-binding?hl=ko
https://jutole.tistory.com/5
그럼 어떤 부분이 차이가 있는지 살펴보면 다음과 같은 차이가 있다고 합니다.
DataBinding
이 ViewBinding
보다 큰 개념이여서 ViewBinding
의 기능 사용이 가능합니다.DataBinding
을 사용하면 클래스 파일이 많이 생겨 빌드 속도가 느려 findViewBinding을 대체하기 위해서 사용하는 목적이라면 ViewBindng
이 효율이 좋습니다.ViewBinding
은 레이아웃 파일의 뷰를 간단하게 접근하는 목적으로 사용이 되며, DataBinding
은 레이아웃 파일과 데이터를 연결해 작업을 할 때 사용이 된다.ViewBinding
은 단방향바인딩, DataBinding
은 양방향바인딩이다.ViewBinding
은 동적인 UI 콘텐츠를 생성하지 못한다.참고
https://warmdeveloper.tistory.com/51
https://velog.io/@godmin66/ViewBinding%EA%B3%BC-DataBinding
https://jutole.tistory.com/5
좋은 정보 감사합니다