개발여행일지~
뷰 바인딩 (View Bindiing) 본문
뷰 바인딩을 왜 쓰는가?
- 뷰 바인딩 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있다.
- 대부분의 경우 뷰 바인딩이 findViewById를 대체한다.
- View 가 null 허용 여부를 알려주지 않는 경우가 있다.
- 서로 다른 xml에서 id를 동일하게 사용할 수 있기 때문에 코드가 헷갈릴 수 있다.
findViewById와의 차이점!
- NullSafe
- 뷰 바인딩은 뷰의 Direct References 즉 직접 참조를 생성하므로 유효하지 않은 뷰ID로 인해 null포인터 예외(NPE)가 발생 할 위험이 없다.
- 즉, 레이아웃에 아직 생성되지 않은 뷰의 참조를 얻어(null상태)해당 뷰의 속성을 사용하려 할 때 발생하는 NPE를 방지한다는 것이다.
- 레이아웃의 일부 구성에만 뷰가 있는 경우 결합 클래스에서 참조를 포함하는 필드가@Nullable로 표시된다.
- Type safety
- 각 바인딩 클래스에 있는 필드의 유형이 XML파일에서 참조하는 뷰와 일치한다.
- 즉,클래스 변환 예외가 발생할 위험이 없다.
- 쉽게 말해 타입을 가지고 있기 때문에 imageView.text같이 타입이 다른 경우 발생하는 오류를 방지할 수 있다.
코틀린에서 뷰바인딩 설정 방법
- gradle
android{
...
// AndroidStudio 3.6 ~ 4.0
viewBinding{
enabled = true
}
// AndroidStudio 4.0 ~
buildFeatures{
viewBinding = true
}
}
안드로이드 스튜디오 버전에 따라 둘중 하나를 적용하면 된다.
- Activity에서 설정
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
}
}
이렇게 설정을 했다면 뷰 바인딩을 할 준비가 되었다.
'코틀린 공부정리' 카테고리의 다른 글
Binding하면서 알게된 것 (0) | 2023.09.01 |
---|---|
RecyclerView 공부하기!! (0) | 2023.08.28 |
회원가입시 조건과 비밀번호 입력시 제한사항 적용하기 (0) | 2023.08.17 |
간단하게 만든 로그인& 회원가입 어플 (0) | 2023.08.11 |
액티비티 생명주기를 조금씩 천천히 알아가보자 (0) | 2023.08.10 |