뷰 바인딩 공식 도큐먼트 : https://developer.android.com/topic/libraries/view-binding?hl=ko
뷰 결합 | Android 개발자 | Android Developers
뷰 결합 뷰 결합 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있습니다. 모듈에서 사용 설정된 뷰 결합은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성합니다. 바인딩
developer.android.com
뷰 바인딩이란?
쉽게 생각하면 View를 Object화 시켜서 바인딩한다고 생각하면 된다. 이렇게 바인딩한 Object는 코드 내에서 쉽게 접근할 수 있다.
findviewbyid와의 차이는?
뷰 바인딩으로 findviewbyid를 대체할 수 있고 findviewbyid의 큰 단점 중 하나인 현재 View에 해당 id가 존재하는지를 정확하게 알고 사용할 수 있다. 이렇게 되면 NPE(NullPointerException)이 발생할 수 없다.
안드로이드에서 뷰 바인딩을 하기 위해서는 app단위 build.gradle 에 아래 옵션을 추가한다.
android {
...
viewBinding {
enabled = true
}
}
예시
이렇게 binding한 뷰는 아래 예시처럼 사용할 수 있다.
layout파일로 activity_add_alarm.xml을 만들었다면 카멜케이스로 뒤에 Binding접미어가 붙어서 ActivityAddAlarmBinding으로 사용할 수 있게 된다.
private var _binding: ActivityAddAlarmBinding? = null
이 _binding내에서 특정 아이디로 값을 가져오는 방식은 아래 예제와 같다.
(다이얼로그에서 사용을 하기 위한 상황이고 나는 _binding에 대해 binding get() = _binding 을 만들어두었다.)
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = ActivityAddAlarmBinding.inflate(inflater, container, false)
val view = binding?.root
var hourPicker : NumberPicker? = binding?.hourPicker
var minutePicker : NumberPicker? = binding?.minutePicker
var amPmPicker : NumberPicker? = binding?.amPmPicker
var addBtn : Button? = binding?.confirmButton
'JAVA > android' 카테고리의 다른 글
Android os 4.4 TLS 1.2 support (0) | 2022.08.14 |
---|---|
kotlin모르는 상태에서 좀 해보려고 popcat 어플 만든 썰 푼다. (2) | 2022.06.25 |