인프런 커뮤니티 질문&답변

정지원님의 프로필 이미지

작성한 질문수

모던 안드로이드 - 코틀린과 Jetpack 활용

[Kotlin] DataBinding

라이브 데이터 + 데이터 바인딩 질문드립니다!

작성

·

141

0

var todos : LiveData<List<Todo>> = getAll()
android:text="@{viewModel.todos.toString()}"

궁금한 부분이 todos가 라이브 데이터여서 관찰이 가능한데 데이터가 바뀌는 게 감지가 되면, getAll() 함수가 실행되는 구조라고 이해했습니다. getAll() 함수에 로그를 남겼는데 데이터를 추가해도 getAll()에 남긴 로그가 찍히지
않아서 질문드립니다..!

답변 1

0

오준석님의 프로필 이미지
오준석
지식공유자

아마도 로그는 한번만 실행될 것 입니다.

내용이 바뀌면 getAll() 이 실행되는 것이 아니고 최초에 getAll() 로 todos를 통해 접근할 객체들을 지정해 주게 되는데 내용이 바뀌게 되면 todos를 observe 하고 있는 쪽에서 로그를 찍어야 합니다.

코드를 보면 DataBinding을 사용하고 계시기 때문에 딱히 로그를 작성할 수 있는 부분은 없습니다.

데이터 바인딩 대신 라이브데이터를 observe() 하신다면 여기에 로그를 작성하셔야 변경되었을 때 마다 로그가 출력되게 됩니다.

결론적으로 getAll()은 최초에 한번만 실행이 될 겁니다.