이번 시간에는 이전 포스팅에 이어서 데이터 변경 시 동적으로 화면의 값도 변경되는 방법에 대하여 알아보겠습니다.
이전 포스팅은 아래 링크를 들어가시면 됩니다.
2022.06.03 - [안드로이드] - [안드로이드 코틀린] ViewModel - 화면 회전 시 데이터 초기화 막는 방법
- 설명 -
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)
}
}
- 설명 -
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 - 실시간 데이터 변경
2022.04.19 - [안드로이드] - [안드로이드] 커스텀 달력 만드는 방법 part1 화면 구성
2022.04.08 - [안드로이드] - [안드로이드] Tab Custom Animation part1 - 화면 구성
[안드로이드 코틀린] 커스텀 달력 만드는 방법 part1 화면 구성 (0) | 2022.06.06 |
---|---|
[안드로이드 코틀린] LiveData 만드는 방법 part2 - 레이아웃에 ViewModel 직접 적용 (0) | 2022.06.05 |
[안드로이드 코틀린] ViewModel - 화면 회전 시 데이터 초기화 막는 방법 (0) | 2022.06.03 |
[안드로이드 코틀린] DataBinding 컴포넌트 쉽게 접근하는 방법 (0) | 2022.06.02 |
[안드로이드 코틀린] 간단한 RecyclerView 만드는 방법 part2 - adapter & MainActivity (0) | 2022.06.01 |
댓글 영역