티스토리 뷰
android jetpack의 data binding을 RecyclerView에 적용하는데 문제가 발생
data binding을 통해 생성된 layout의 binding 클래스의 Impl 클래스를 찾을 수 없다는 에러가 발생했다.
해당 문제를 해결하기 위한 방법에 대해 이것 저것 찾아 본 결과
1. rebuild, clean project 해라 -> 즉, cache 로 인해 변경사항을 적용하지 않고 실행되는 문제가 있으니 삭제하고 다시 실행하라고 한다. 그러나 나는 이문제가 아니었다.
2. build.gradle(app)에서 databinding 을 true로 설정해라 -> 이거는... 애초에 data binding을 적용하기 위한 설정이므로 나랑은 상관 없었다.
3. data binding을 적용할 layout의 variable은 절대 static 클래스를 적용하지 말아라! <- 이게 나의 해결 방법
그래서 data binding 이 되는 원리? 랄까... 찾아보았다.
우선 data binding은 build 과정에서 layout에 대한 DataBinding abstract 클래스와 이에 대한 Impl 클래스가 생성된다.
그러나 이 과정에서 나는 Impl 클래스가 생성이 안되는 것!!
몇 시간의 삽질과 databinding 클래스 생성 원리를 찾아본 결과, layout에 binding 을 위한 variable의 type은 static 클래스가 아니어야 한다는 것이다. 왜냐하면 얘네가 클래스를 생성하여 객체를 만들고 바인딩을 진행하는데, static 이면 클래스에 대한 객체 생성이 이뤄지지 않기 때문이다....
음... 뭐든지 생성 원리를 알고 적용해야 한다. 바보같은 짓을 했지만 그래도 알았으니 담부터 조심해야지 !!!
'android' 카테고리의 다른 글
[android] data binding - 객체 식별 (0) | 2020.07.27 |
---|---|
[android] SingleLiveEvent (0) | 2020.07.27 |
[Google I/O] Fun with LiveData (Android Dev Summit '18) 정리 (0) | 2020.07.13 |
[Google I/O] 2016 - Advanced Data Binding ( + 20분 이후부터는 추가 예정 ) (0) | 2020.07.10 |
[android] fragment 를 Dialog로 사용 시 크기 설정 방법 (0) | 2020.07.03 |