인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

angella1106님의 프로필 이미지
angella1106

작성한 질문수

[중급편] 코인 가격 모니터링 앱 제작 (Android Kotlin)

화면 애니메이션 만들기 (Lottie)

LiveData 관련 질문

작성

·

584

0

 메인 화면을 만드는 과정에서 livedata에 대해 궁금한 점이 생겨 질문드립니다.
selected 버튼을 누르면, dbRepository.updateInterestCoinData(interestCoinEntity) 를 통해 db에 있는 데이터가 업데이트 되는 것 까지는 알겠는데, 그 이후 livedata인 뷰모델에 선언된 변수, selectedCoinList가 업데이트 되어서 다시 리사이클러뷰가 업데이트되는 것인가요? 어떻게 리사이클러뷰의 UI가 업데이트 되는 것인지가 헷갈려 질문드립니다.

답변 1

0

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

안녕하세요 angella님

질문주신 부분에 대해서

그 이후 livedata인 뷰모델에 선언된 변수, selectedCoinList가 업데이트 되어서 다시 리사이클러뷰가 업데이트되는 것인가요? 어떻게 리사이클러뷰의 UI가 업데이트 되는 것인지가 헷갈려 질문드립니다.

혹시 liveData의 동작방식에 대한 문의이실까요?

아니면 flow의 동작방식에 대한 문의이실까요?

코드와 함께 좀 더 자세히 문의주시면 도움드릴 수 있을 것 같습니다 :)

angella1106님의 프로필 이미지
angella1106
질문자

관심있는 코인을 누르면 콜백 함수를 통해 viewModel.updateInterestCoinData함수가 실행되고, MainViewModel 에서 dbRepository.updateInterestCoinData(interestCoinEntity) DB가 업데이트가 되는 걸로 이해했습니다. 그 이후 어떻게 recyclerview의 UI가 업데이트 되는지 정확하게 이해가 되지 않아 질문드렸습니다!

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

좋은 질문이시네요.

업데이트를 클릭하면 일어나는 일들을 순서대로 써보겠습니다.

 

  1. 업데이트를 누르면 선언된 viewModel에 update기능 실행

  2. viewModel에서 Room을 호출해서 db업데이트

  3. flow와 room을 같이 쓰고 있기 때문에 변경사항 flow로 반환

  4. flow를 livedata 형태로 사용하여 livedata가 변경사항 감지

  5. livedata가 변경되면서 observe 부분이 실행되어 UI 업데이트

 

의 순서입니다.

혹시 설명이 부족했거나 어려우신 부분 있으시면 알려주세요~

아래의 링크를 참고하셔도 좋아요~

https://medium.com/androiddevelopers/room-flow-273acffe5b57

angella1106님의 프로필 이미지
angella1106

작성한 질문수

질문하기