livedata
![[JETPACK개론] DataBinding + ViewModel + LiveData](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBcjG7%2FbtrJCoi51o3%2FgQ4A1lhjzGFqOPww4BmHc1%2Fimg.png)
[JETPACK개론] DataBinding + ViewModel + LiveData
앞에서 공부했던 DataBinding과 ViewModel과 LiveData를 사용하여 실습을 진행해보자!! 이렇게 과일 이름이 주어지고, 그 밑 두 개는 위의 과일이름이 섞여서 나오는 프로그램을 ViewModel과 LiveData를 사용하여 구현해보자. 데이터바인딩 준비 buildFeatures{ dataBinding true } ViewModel 준비 class MainViewModel : ViewModel() { private var _mutableWord = MutableLiveData("") val liveWord : LiveData get() = _mutableWord private var _randommutableWord = MutableLiveData("") val randomliveWord..
[JETPACK개론] Map / SwitchMap
LiveData를 사용하다 보면 여러 가지의 데이터를 다루게 되고, 이러한 데이터들이 함께 바껴야하는 상황도 많이 만나게 된다. 데이터베이스와 네트워크 통신을 도와주는 라이브러리와 함께 사용되기도 하는데 이 때 Transformation의 Map과 SwitchMap 메소드를 사용한다!! 간단한 실습을 통해 이 두 가지를 알아보자! EditText에 숫자를 입력하고 버튼을 누르면 자동으로 그 숫자끼리 더해지고, 곱해지는 프로그램을 구현해보자. 예를 들어, 10을 입력하면 20과 100이 출력되는 것이다. 위의 메소드를 모두 이용한다고하면, 10이라는 라이브데이터로 20과 100으로 변환시키는 것에서 이용할 수 있을 것이다! private var _mutableCount = MutableLiveData(0)..
![[JETPACK개론] Fragment LiveData / LifeCycleOwner](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwjS1y%2FbtrJFOaOA0X%2Fw4EupUTcikfwh8ykpPHw90%2Fimg.png)
[JETPACK개론] Fragment LiveData / LifeCycleOwner
프래그먼트에서 LiveData를 사용하기 전에 프래그먼트의 View가 종료되는 시점을 LifeCycle을 통해 알아보자! Fragment Class 두 개를 준비하자! binding.btn1.setOnClickListener { val transaction = manager.beginTransaction() val fragment = BlankFragment1() transaction.replace(R.id.frameArea, fragment) transaction.addToBackStack(null) transaction.commit() } binding.btn2.setOnClickListener { val transaction = manager.beginTransaction() val fragment..
[JETPACK개론] LiveData 와 MutableLiveData
전 글에서 MutableLiveData를 사용해서 간단한 실습을 해보았다. 사용해봤던 MutableLiveData와 LiveData의 차이는 무엇일까? 결론부터 말하자면 LiveData는 변경될 수 없고, MutableLiveData는 변경될 수 있다. 바로 실습을 통해서 이에 대해서 구체적으로 알아보자! 그 전의 게시물에 사용했던 코드의 액티비티 클래스에서 직접 다음과 같이 MutableLiveData의 값을 변경해보자. viewModel.testMutableLiveData.value = 10 MutableLiveData는 이런식으로 ViewModel클래스 이외에 Activity클래스에서도 변경이 가능하다. 하지만!! 이럼 우리가 ViewModel클래스를 만들어준 의미가 없어지고, 뷰모델에서만 변경하려..
![[JETPACK개론] LiveData](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGkl5U%2FbtrJBlU0Cps%2Fzhu4M1YJnlnTuniMlJYiGK%2Fimg.png)
[JETPACK개론] LiveData
LiveData? LiveData는 관찰 가능한 데이터 홀더 클래스이다. 관찰 가능한 일반 클래스와 달리 LiveData는 수명주기를 인식한다. 이렇게 공식문서에 정의되어있다. 즉, 쉽게 다시 설명하자면 데이터를 LiveCycle과 결합해서 관찰해줄 수 있는 것이 LiveData이다!! 가장 대표적인 장점 중에 하나가 UI와 데이터 상태의 일치를 보장해준다! LiveData는 기본 데이터가 변경될 때 observer 객체에 알리고, 코드를 통합하여 이러한 observer객체에 UI를 업데이트할 수 있다. 다음 예시를 살펴보자! class MainActivity : AppCompatActivity() { private var testMutableLiveData = MutableLiveData(0) ove..