상세 컨텐츠

본문 제목

[안드로이드 코틀린] LiveData 만드는 방법 part1 - 실시간 데이터 변경

안드로이드

by aries574 2022. 6. 4. 11:51

본문


이번 시간에는 이전 포스팅에 이어서 데이터 변경 시 동적으로 화면의 값도 변경되는 방법에 대하여 알아보겠습니다.

이전 포스팅은 아래 링크를 들어가시면 됩니다.

2022.06.03 - [안드로이드] - [안드로이드 코틀린] ViewModel - 화면 회전 시 데이터 초기화 막는 방법

 

[안드로이드 코틀린] ViewModel - 화면 회전 시 데이터 초기화 막는 방법

 이번 시간에는 이전 포스팅에 이어서 화면 전환 시 데이터가 초기화되는 현상을 막는 방법에 대하여 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.06.02 - [안드로이드] -

aries574.tistory.com


목차

1. 실행 화면

2. ViewModel 클래스 수정 MainViewModel.kt
3. 메인 코드 수정 MainActivity.kt


1. 실행 화면

 

2. ViewModel 클래스 수정 MainViewModel.kt

 - 설명 -

 1. score 타입이 Int -> MutableLiveData <Int>() 변경되었습니다.

 2. init 초기화 부분에 score 값 지정

 3. scorePlus, scoreMinus 함수 score 코드 변경

class MainViewModel: ViewModel(){

    var score = MutableLiveData<Int>()

    //객체 생성시 실행됨
    init {
        Log.d("MainViewModel", "MainViewModel 생성")

        score.value = 0
    }

    override fun onCleared() {
        super.onCleared()
        Log.d("MainViewModel", "MainViewModel 종료")
    }

    public fun scorePlus(){

        //물음표는 null일 수 있다(null에러 방지)
        score.value  = score.value?.plus(1)
    }

    public fun scoreMinus(){
        score.value = score.value?.minus(1)
    }
}

 


3. 메인 코드 수정 MainActivity.kt

 - 설명 - 

1. score.observe가 변화를 감지하는

덕분에 버튼 이벤트에 중복으로 있는

TextView에 값 변경하는 부분 삭제 

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    //뷰모델 선언
    private lateinit var mainViewModel: MainViewModel

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //binding 초기화
        binding = DataBindingUtil.setContentView(this, R.layout.activity_main)

        //뷰모델 초기화
        mainViewModel = ViewModelProvider(this).get(MainViewModel:: class.java)

        //score변수의 변화를 감지
        mainViewModel.score.observe(this, Observer {

            binding.scoreText.text = mainViewModel.score.value.toString()
        })


        //마이너스 버튼
        binding.minusBtn.setOnClickListener {
            mainViewModel.scoreMinus()
        }

        //플러스 버튼
        binding.plusBtn.setOnClickListener {
            mainViewModel.scorePlus()
        }
    }

}

 

2022.05.12 - [안드로이드] - [안드로이드] LiveData 만드는 방법 part1 - 실시간 데이터 변경

 

[안드로이드] LiveData 만드는 방법 part1 - 실시간 데이터 변경

1. 기존 int 타입에서 MutableLiveData 로변경되었습니다. 이번 시간에는 LiveData 만드는 방법을 알아 보겠습니다. 이전 포스팅에 이어서 하겠습니다.  score변수의 값을 -1 하는 scoreMinus()  score변수의..

aries574.tistory.com

2022.04.19 - [안드로이드] - [안드로이드] 커스텀 달력 만드는 방법 part1 화면 구성

 

[안드로이드] 커스텀 달력 만드는 방법 part1 화면 구성

이번 시간부터 커스텀 달력을 만들어 보겠습니다. 이번에는 메인화면 구성을 해보겠습니다. 목차 1. 실행 화면 2. 메인 화면 구성 activity_main.xml 1. 실행 화면 2. 메인 화면 구성 activity_main.xml  -.

aries574.tistory.com

2022.04.08 - [안드로이드] - [안드로이드] Tab Custom Animation part1 - 화면 구성

 

[안드로이드] Tab Custom Animation part1 - 화면 구성

이번 시간부터 TabLayout을 직접 만들어 애니메이션까지 넣어보는 방법을 알아보겠습니다. 이번 포스팅은 화면 구성을 해보겠습니다. 목차 1. 실행 화면 2. 테마 변경 3. 배경 색상 파일 만들기(drawab

aries574.tistory.com

반응형

관련글 더보기

댓글 영역