DBILITY

android viewmodel 에서 constructor arguments 본문

android/kotlin

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 > kotlin' 카테고리의 다른 글

android retrofit2  (0) 2024.04.01
android room database  (0) 2024.03.29
android migration kapt to ksp  (0) 2024.03.29
안드로이드 SQLiteOpenHelper 구현  (0) 2024.03.28
안드로이드 internal directory file read ,write  (0) 2024.03.26
Comments