본문 바로가기

분류 전체보기40

코루틴에서 Flow가 뭐야? 일단 정의 먼저 보면, "코틀린의 플로우는 순차적으로 값을 내보내고 정상적으로 또는 예외로 완료되는 비동기적인 데이터 스트림입니다." 정의만 봐도 대충 뭔소린지는 알겠지??? rx를 써 봤으면 대충 알텐데... 쉽게 설명해서... 데이터를 비동기적으로 계속 뿅뿅 하고 쏘는 애다 라고 이해하면 쉬울 것 같아. 예를들어 내가 DB가 하나가 있다고 생각해보자. 그래서 그걸 불러와서 쫙 화면 뿌려줬어. 근데 다른 스레드에서 뭔가 작업을 하면서 DB에 추가를 했네? 그럼 view에서 그걸 보고 또 DB에 쿼리하고 하면 귀찮자나. 그래서 내가 flow를 하나 만들기로 했어. 데이터가 변경되면, 데이터를 다시 쏴주는거지. 다른 스레드에서 DB가 변경되면 flow에 새로운걸 던지는 식으로. 그럼 View에서는 그냥 그.. 2023. 5. 1.
토이프로젝트 1-9 viewmodel(vm) 만들기 뷰 모델의 역할은 간단해, 뷰는 화면에 보이는 것들만 처리하고, 뷰 모델은 데이터 영역간에 연결?을 하는 역할이지 뷰에서는 불필요하게 데이터를 이렇게 저렇게 가져오는 부분이 있을 필요 없으니 그걸 다 뷰 모델에서 처리하게 하고, 뷰 모델에서 데이터를 읽어서 뷰에 필요한 부분만 가공한다던지, 뷰에서 넘어온 데이터를 DB에 맞게 변경해서 저장한다든지 하는거지. 네트워크로 데이터를 받아오는 경우에 뷰 모델에서 네트워크를 쓸지, 내부에 캐시된 DB를 쓸지 정하고 DB의 캐시 정보도 업데이트를 해주는거지. 그러면 뷰에서는 이게 어디서 온 데이터인지는 알 필요 없이 그냥 보여주기만 하면 되는거야. 그리고 뷰 모델이 너무 커지는 걸 막기 위해서 usecase라는 것도 쓰기는 하는데 일단 그건 다음번에 알아보고 오늘은.. 2023. 4. 23.
Unresolved reference: viewModels 에러 해결법 야심차게 mvvm으로 작성하고 빌드하면 항상 만나는 에러! 뭐 이유는 간단하다. 기본으로 안스에서 프로젝트 만들면, 관련된걸 implement 안해줘서 그런거임 아래처럼 gradle에 추가해주면 됨 implementation 'androidx.fragment:fragment-ktx:1.5.7' implementation 'androidx.activity:activity-ktx:1.7.1' 2023. 4. 22.
토이프로젝트 1-8 view binding 이건 뭐 어려울게 없어. 우리가 주구장창 findviewbyid로 가져와서 쓰던거를 알아서 해주는 기능이야 먼저 현재 코드를 보면 package com.lonewhite.finhelper.test import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button import android.widget.TextView import com.lonewhite.finhelper.FinApplication import com.lonewhite.finhelper.R import com.lonewhite.finhelper.data.model.InvItem import com.lonewhite.finhe.. 2023. 4. 12.
반응형