전체 글

전체 글

    [JETPACK개론] Fragment LiveData / LifeCycleOwner

    [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

    [JETPACK개론] LiveData

    LiveData? LiveData는 관찰 가능한 데이터 홀더 클래스이다. 관찰 가능한 일반 클래스와 달리 LiveData는 수명주기를 인식한다. 이렇게 공식문서에 정의되어있다. 즉, 쉽게 다시 설명하자면 데이터를 LiveCycle과 결합해서 관찰해줄 수 있는 것이 LiveData이다!! 가장 대표적인 장점 중에 하나가 UI와 데이터 상태의 일치를 보장해준다! LiveData는 기본 데이터가 변경될 때 observer 객체에 알리고, 코드를 통합하여 이러한 observer객체에 UI를 업데이트할 수 있다. 다음 예시를 살펴보자! class MainActivity : AppCompatActivity() { private var testMutableLiveData = MutableLiveData(0) ove..

    [JETPACK개론] ViewModelFactory

    ViewModelFactory 안드로이드 개발을 하면서 네트워크 통신을 하거나 localDB, room SQLite 등을 포함하여 데이터를 ViewModel로 넘겨주고 싶을 때 안드로이드 Factory클래스를 이용할 수 있다. 간단히 int형 숫자 하나를 전달하는 ViewModel을 만들어 테스트해보자. class MainViewModel(num : Int) : ViewModel() { init{ Log.d("MainViewModel" , num.toString()) } 숫자 하나를 받은 ViewModel 클래스이다. 이제 Factory클래스를 이용해 ViewModel에 원하는 파라메터를 넣어 생성하는 방법을 이용해보자! class MainViewModelFactory(private val num : I..

    [Kotlin/Basic] 코틀린에서의 클래스

    [Kotlin/Basic] 코틀린에서의 클래스

    1. 클래스와 프로퍼티 class Person constructor(name : String, age : Int){ val name = name var age = age } 자바에서는 클래스를 생성해주고 안에 Person( ) 하고 생성자를 만들어 주었는데, 코틀린에서는 클래스를 생성한 뒤 constructor를 통해 생성자를 적어준다. 이 때 자동으로 getter, setter가 만들어지고, 이 constructor는 생략이 가능하다!! val person = Person("ssongsik", 25) println(person.name) 또한, person.getName을 통해 데이터를 불러왔어야 했는데 위와 같이 person.name으로 이름을 불러올 수 있고, setter 또한, person.set..