🙏 포스팅을 읽기 전 참고해 주세요 🙏
해당 블로그는 신입 개발자가 공부한 내용을 기록 용도로 운영하는 공간입니다.
최대한 오피셜한 내용을 작성하려고 노력하고 있지만, 일부 부정확한 정보가 포함되어 있을 수 있습니다.
해당 내용은 댓글이나 메일을 남겨주시면 즉시 확인 후 조치를 취하도록 하겠습니다. 감사합니다.
2024.04.27 일부 내용 수정 적용
1️⃣ view Binding이란
XML 파일에서 생성한 view들을 보다 간편하게 핸들링할 수 있도록 구글에서 지원하는 기능
2️⃣ view Binding을 사용하는 이유
수정 중
3️⃣ 사용 방법
viewBinding을 사용하기 위해서는, 모듈 수준의 build.gradle 파일에 아래의 코드를 추가해야 한다.
간혹 아래의 코드를 추가하는 예제나 답변도 존재할텐데, 최신 버전의 Android Gradle 플러그인에서는
권장되지 않는 방식이기에 위에 제시된 buildFeatures 블럭 내부에 viewBinding=true 선언을 하도록 한다.
그리고 Gradle에서는 대/소문자를 구분하니 ViewBinding이라고 검색하지 않도록 주의하자.
(본인은 처음에 ViewBinding으로 입력했다가 원인을 찾으러 다녔었다..)
build.gradle 파일에 수정 사항이 있다면 반드시 안드로이드 스튜디오 우측 상단에 나오는 sync now를 눌러줘야 한다.
여기까지 진행했다면, viewBinding을 사용할 준비를 마친 것이니 자바(혹은 코틀린) 파일에 다음과 같은 명령어
ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater());를 입력하여
뷰 바인딩으로 인해 생성된 바인딩 클래스의 객체를 생성해주도록 한다.
생성된 binding 객체를 실제로 사용하는 예시를 몇 가지 첨부하도록 하겠다.
다음 예제는 main 레이아웃에 생성된 버튼(btn1, btn2, btn3)에 클릭 이벤트가 감지되면, 텍스트(txt1)에 출력되는
문자열을 변경하는 코드이다.
사용 방법은 어렵지 않으니 아래 예제를 참고하여 다른 동작들을 직접 실습해 보는 것을 추천한다.
4️⃣ 뷰 바인딩에 의해 클래스가 생성되는 과정
viewBinding을 사용하는 방법을 학습하는 것이 목적인 사람들은 이 이후의 내용은 보지 않아도 무방하다.
뷰 바인딩을 적용하면, XML 레이아웃 파일이 다음 규칙에 따라 자동으로 클래스로 만들어진다.
ㆍ레이아웃 파일명에 파스칼 케이스(PascalCase)가 적용되어 변경
e.g ) activity_main -> Activity_Main (단어의 첫 글자를 대문자로 짓도록 하는 규칙)
ㆍ_ 삭제
e.g) Activity_Main -> ActivityMain
ㆍ접미사로 Binding이 추가됨
e.g) ActivityMainBinding즉, activity_main.xml
레이아웃 파일은 위 규칙들이 적용된 ActivityMainBinding 클래스가 생성되는 것이다.
ActivityMainBinding.inflate()는 바인딩 클래스에서 제공하는 정적 메서드로 XML 레이아웃을
Inflater를사용하여 View 객체로 변환하고, 바인딩 객체를 생성해 준다.
getLayoutInflater()는 Activity에서 제공하는 메서드로, LayoutInflater 객체를 반환한다.
LayoutInflater는 앞서 말한대로 XML 레이아웃 파일을 View 객체로 변환하는 역할을 한다.
마지막으로 ActivityMainBinding 클래스의 인스턴스를 참조하는 binding 변수를 통해
XML 레이아웃 파일에정의되어 있는 뷰에 접근할 수 있게 되는 것이다.
📝 Reference
👉 Claude3 Opus 답변 일부 참고
'~2024.10' 카테고리의 다른 글
[비공개] View Event 처리 구조 (0) | 2024.03.10 |
---|---|
2024년 3월 기준 챗GPT 안 될 때(or 속도 저하) 해결 방법 (0) | 2024.03.09 |
"깡쌤의 안드로이드 프로그래밍 with 자바" 유료 강의 후기 (0) | 2024.03.09 |
메소드 체이닝(Method Chaining) 정리(예제 포함) (0) | 2024.03.09 |
[Android] EventListener 메소드 종류(펌) (0) | 2024.03.05 |