Codelab으로 LiveData 알아보기 - 6. Add LiveData to the ScoreViewModel

2023. 4. 28. 19:00·Dev experience/Android
728x90
반응형

이번에는 score를 ScoreViewModel의 LiveData 객체로 변경하고 옵저버를 붙일 것이다.

이번 작업은 4번의 LiveData를 GameViewModel에 추가한 작업과 비슷할 것이다.

 

앱의 모든 데이터가 LiveData를 사용하도록 하기 위해 ScoreViewModel에 이러한 변경점을 적용한다.

 

1. ScoreViewModel의 score 변수를 MutableLiveData로 변경한다.

_score 변수를 네이밍 컨벤션을 지켜 이름을 변경하고 backing property를 추가한다.

 

private val _score = MutableLiveData<Int>()
val score: LiveData<Int>
   get() = _score

 

2. GameViewModel의 초기화 블럭 안에서 _score를 초기화한다. 그리고 로그를 삭제하고 싶다면 삭제해도 된다.

(Codelab에서 기본 제공하는 코드에 로그가 있다.)

 

init {
   _score.value = finalScore
}

 

3. ScoreFragment의 onCreateView안에 viewModel 초기화 후, score LiveData 객체에 옵저버를 붙인다.

람다식안에서 score 값을 score text view에 설정한다.

viewModel의 score 값을 직접 할당하는 코드를 제거한다.

 

추가할 코드

// Add observer for score
viewModel.score.observe(viewLifecycleOwner, Observer { newScore ->
   binding.scoreText.text = newScore.toString()
})

 

삭제할 코드

binding.scoreText.text = viewModel.score.toString()

 

4. 앱을 실행하고 게임을 플레이하면, 앱은 이전과 동일하게 동작하지만

지금은 점수를 업데이트하기 위해 LiveData와 옵저버를 사용하고 있다.

 

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Dev experience > Android' 카테고리의 다른 글

Codelab으로 LiveData 알아보기 - 8. 정리(完)  (0) 2023.05.03
Codelab으로 LiveData 알아보기 - 7. Add the Play Again Button  (0) 2023.05.01
Codelab으로 LiveData 알아보기 - 5. Add a game-finished event(2)  (0) 2023.04.27
Codelab으로 LiveData 알아보기 - 4. Add a game-finished event(1)  (0) 2023.04.25
종종 간과하는 문제 해결 에피소드(feat. Handler, Thread)  (0) 2023.04.24
'Dev experience/Android' 카테고리의 다른 글
  • Codelab으로 LiveData 알아보기 - 8. 정리(完)
  • Codelab으로 LiveData 알아보기 - 7. Add the Play Again Button
  • Codelab으로 LiveData 알아보기 - 5. Add a game-finished event(2)
  • Codelab으로 LiveData 알아보기 - 4. Add a game-finished event(1)
BonusTrack02.dev
BonusTrack02.dev
공부, 일상
  • BonusTrack02.dev
    BonusTrack02.dev
    BonusTrack02.dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (237)
      • Dev experience (85)
        • Android (84)
        • Kotlin (1)
      • Study (62)
        • Kotlin (26)
        • Swift (17)
        • Java (19)
      • 프로그래머스 (68)
      • 주저리주저리 (22)
        • 카페 (5)
        • 음식점 (4)
        • 컨퍼런스 (1)
        • 팝업스토어 (4)
        • 전시회 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    배열
    Material
    ViewModel
    코틀린
    자바
    안드로이드
    programmers
    getNumericValue
    PCCE
    Java
    coroutines
    Kotlin
    aac
    room
    Observer
    SWIFT
    jetpack
    viewModelScope
    ios
    LiveData
    databinding
    코루틴
    스위프트
    오블완
    daterangepicker
    티스토리챌린지
    CodeLab
    프로그래머스
    MVVM
    android
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
BonusTrack02.dev
Codelab으로 LiveData 알아보기 - 6. Add LiveData to the ScoreViewModel
상단으로

티스토리툴바