728x90
반응형
뷰 바인딩 공식 도큐먼트 : https://developer.android.com/topic/libraries/view-binding?hl=ko
뷰 바인딩이란?
쉽게 생각하면 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
728x90
반응형
'JAVA > android' 카테고리의 다른 글
Android os 4.4 TLS 1.2 support (0) | 2022.08.14 |
---|---|
kotlin모르는 상태에서 좀 해보려고 popcat 어플 만든 썰 푼다. (2) | 2022.06.25 |