DBILITY

독거 가능성 100% 노후에 라면값이라도 하게 센스를 발휘합시다!😅
Please click on the ad so that I can pay for ramen in my old age!
点击一下广告,让老后吃个泡面钱吧!
老後にラーメン代だけでもするように広告を一回クリックしてください。

android viewmodel 에서 constructor arguments 본문

android

android viewmodel 에서 constructor arguments

DBILITY 2024. 3. 29. 11:02
반응형

AndroidViewModel을 상속받아 application을 사용하면 쉽다

ViewModel에서 context를 constructor argument로 받고 싶은 경우에는

ViewModelProvider.Factory를 상속받아 create를 구현하면 된다.

그런데 이렇게도 보통 사용을 할까?

class RoomViewModelFactory(private val helper: RoomMemoHelper) : ViewModelProvider.Factory {
    override fun <T : ViewModel> create(modelClass: Class<T>): T {
        return if (modelClass.isAssignableFrom(RoomViewModel::class.java)) {
            RoomViewModel(helper) as T
        } else {
            throw IllegalArgumentException()
        }
    }
}
class RoomViewModel(private val helper: RoomMemoHelper) : ViewModel() {

    private val dao: RoomMeoDao = helper.roomMeoDao()
    .........
}
private lateinit var helper: RoomMemoHelper
private lateinit var viewModel: RoomViewModel

override fun onCreate(savedInstanceState: Bundle?) {
  .....
  helper = Room.databaseBuilder(this, RoomMemoHelper::class.java, "room_db")
            .allowMainThreadQueries()//학습시만
            .build()
  viewModel = ViewModelProvider(this, RoomViewModelFactory(helper))[RoomViewModel::class.java]
}

 

반응형

'android' 카테고리의 다른 글

공휴일 api 제공 site  (0) 2024.04.01
android room database  (0) 2024.03.29
android migration kapt to ksp  (0) 2024.03.29
android version catalog  (0) 2024.03.29
안드로이드 SQLiteOpenHelper 구현  (0) 2024.03.28
Comments