Navigation Drawer 기능을 사용해 Navigation 목록이 있는 프로그램을 작성하려고 하는데 어렵고 생소한 기능이 많았다. 하나하나 이해하면서 공부하기 위해 이번엔 Binding 기능을 알아보겠다.
기존 xml 파일에서 id를 가져와 동적인 일을 할 때 TextView나 Button 같은 변수를 선언하고 findViewById()를 통해 변수와 xml 파일의 요소를 연결했다. 하지만 이런 방식으로 연결하게 되면 몇 가지 단점이 있다. 실수로 유효하지 않은 id를 사용하면 null 오류가 발생할 수 있고, casting Type을 잘못 적어서 casting 하면 cast exception이 발생할 수 있다. 또한 속도가 상대적으로 느리다.
이러한 단점을 해결하기 위해 기존엔 Butter knife라는 라이브러리나 extension을 이용해서 불편함을 해결했다고 한다. 그러다 3.6 버전에서 이를 대체할 수 있는 view binding이 나오게 된다.
view binding을 사용하기 위해선 build.gradle에 코드를 추가해줘야 한다.
기존 build.gradle
android{
}
속에
buildFeatures {
viewBinding = true
}
을 넣어주면 된다. view binding을 사용하겠다는 의미다. 추가 후 File 탭에 있는 Sync Project with Gradle Files를 해 주어야 반영된다.
수정 후 build.gradle
간단한 코드 추가로 사용하기 위한 준비가 끝났다.
이제 findViewById를 사용했던 코드를 binding을 사용한 코드로 바꿔보자.
기존 MainActivity.java
binding을 사용하면 xml과 연결되는 binding 클래스가 자동으로 생성되며 그 클래스의 멤버로 xml 파일의 ID를 가진 모든 뷰를 참조하는 참조변수가 있다. xml 파일명이 activity_main 이라면 binding 클래스명은 ActivityMainBinding이 된다.
ListView 변수와 findViewById를 사용했던 코드를 ActivityMainBinding 변수와 inflate(), setContentView() 함수를 이용한 코드로 바꿔주자.
수정 후 MainActivity.java
view binding을 사용하면 사용하는 View의 수가 많으면 많을수록 코드가 짧아진다. 20개가 넘는 View들에 전부 findById를 사용한다고 생각해 보니 벌써 코드가 더러워질 것 같은 기분이다... view binding을 애용해보자.
'안드로이드' 카테고리의 다른 글
안드로이드 공부 기초 9(Layout의 속성) (1) | 2023.01.21 |
---|---|
안드로이드 공부 기초 8(Toolbar & Fragment) (1) | 2023.01.19 |
안드로이드 공부 기초 6(ListView) (1) | 2023.01.18 |
안드로이드 공부 기초 5(AndroidManifest.xml) (0) | 2023.01.18 |
안드로이드 공부 기초 4(ImageView & Toast) (1) | 2023.01.16 |