Android Lazy Lateinit
업데이트:
카테고리: Android
/lateinit
처음 선언할 때는 값을 할당하지 않고, 타입만 지정함
이후 해당 변수를 사용할 떄 원하는 대로 할당할 수 있음
나중에 사용할 때 초기화가 되어있지 않으면 Exception 발생
by lazy
lazy {} 내부 구문에 미리 초기화 할 코드를 넣어놓는다.
이후 해당 변수가 사용될 때 초기화를 시킨다.
이중 리사이클러 뷰를 초기화 하는 과정에서 내부에 있는 리사이클러 뷰의 adapter가 list의 마지막 값으로 갱신되어 중복되는 문제가 발생
by lazy
는 해당 변수가 처음 사용될 때 초기화가 진행되고 그 이후에는 별도의 초기화가 일어나지 않는다.
선언 당시에는 초기화되지 않고 이후 의존하는 값들이 초기화 되거나 해당변수가 호출되면 lazy {} 구문으로 해당 변수를 초기화 시킨다.
즉, 불변한 값이므로 값을 변경할 수 없다.
그래서 BindViewHolder 내부에서 adapter를 초기화하고 정의하니 리스트의 값이 정상적으로 들어갔다.