ViewModel

    [Compose]비만도 계산기

    [Compose]비만도 계산기

    계속 xml로만 안드로이드 개발을 해왔는데 이제부터 익숙해지려면 Compose로만 해야할 것 같았다.. 그래서 간단히 이번 글에서는 xml이 아닌 compose로만 bmi 계산기를 만들어보자! 먼저 첫 번째 화면을 만들어보자. 첫 번째 화면에서의 앱의 가장 상단바를 Scaffold를 이용해서 만들 수 있다. Scaffold( topBar = { TopAppBar( title = { Text("비만도 계산기")} ) } ) 위와 같이 title을 만들어주면 앱의 상단바가 완성된다. 입력할 수 있는 TextField 두 개, 버튼 한 개가 있는데, 여기서 그냥 TextField가 아닌, 입력할 때 hint값이 올라가는 OutLinedTextField를 이용해야 한다. Column( modifier = Mod..

    [JETPACK개론] Retrofit + ViewModelScope + RV + Glide

    [JETPACK개론] Retrofit + ViewModelScope + RV + Glide

    이 게시물에서는 기존에 진행했던 Retrofit + ViewModel + RV에서 해당 데이터에 이미지를 Glide로 불러오고, AAC(Android Architecture Components)에 맞게끔 구조를 살짝 변경해보겠다. AAC(Android Architecture Components) 는 테스트와 유지보수가 쉬운 앱을 디자인할 수 있도록 돕는 라이브러리의 모음이다. 위의 그림처럼 크게 ViewModel, Repositroy, Room, Retrofit 등이 포함되어 있다. 이제 코드를 살펴보자. 먼저 위와 같이 패키지를 분리하여 구성하였고, object RetrofitInstance { val BASE_URL = "https://raw.githubusercontent.com/" val clin..

    [JETPACK개론] Retrofit 예제 + RecyclerView

    [JETPACK개론] Retrofit 예제 + RecyclerView

    먼저 기존의 포스팅 했던 게시물에 이어서 Retrofit + ViewModel + ViewModelScope + RecyclerView 를 이용하여 여태까지 공부했던 내용을 합쳐 예제를 통해 연습해보자! Retrofit 게시물 -> [JETPACK개론] Retrofit 트러버 앱을 만들면서 Retrofit을 많이 이용하였는데 ViewModel 과 코루틴과 같이 사용해본 경험은 없어 아쉬움이 큰 프로젝트였다. 따라서 이번 젯팩 인프런 강의를 들으면서 다시 한번 복습하며 Vie ssongcode.tistory.com @GET("posts/1") suspend fun getPost1() : Post @GET("posts/{number}") suspend fun getPostNumber( @Path("numbe..

    [JETPACK개론] DataBinding + ViewModel + LiveData

    [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개론] 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..