Android Quicky: Kotlin의 ViewModelProvider.Factory
소개
시작하기
class CalfViewModel(private val repository: CalfRepository): ViewModel() {
class CalfViewModelFactory(private val repository: CalfRepository): ViewModelProvider.Factory{
override fun <T:ViewModel> create(modelClass: Class<T>):T{
if(modelClass.isAssignableFrom(CalfViewModel::class.java)){
@Suppress("UNCHECKED_CAST")
return CalfViewModel(repository) as T
}
throw IllegalArgumentException("UNKNOWN VIEW MODEL CLASS")
}
}
뷰모델이란?
UI-related data
를 저장하고 관리하도록 설계되었습니다. ViewModel 클래스를 사용하면 화면 회전과 같은 구성 변경 후에도 데이터가 유지됩니다. 소위 UI-related data
는 사용자가 입력한 데이터, 런타임 중에 생성된 데이터 및 데이터베이스에서 로드된 데이터와 같은 몇 가지 다른 종류의 데이터입니다. ViewModelProvider.Factory
NO!
You should never manually construct a ViewModel outside of a ViewModelProvider.Factory.
입니다.var viewModel = ViewModelProvider(this)
You should never manually construct a ViewModel outside of a ViewModelProvider.Factory.
에 명시된 문서와 모순되지 않습니까? 실제로 문서에 따르면 HERE, ViewModelProvider(this)
는 기본 Factory 인터페이스를 사용하지 않습니다. 커스텀 ViewModelProvider.Factory
-정답은 ViewModelProvider.Factory 인터페이스를 구현하는 클래스를 생성하는 것입니다. 이것이 바로 우리가 수행한 작업입니다.
class CalfViewModelFactory(private val repository: CalfRepository): ViewModelProvider.Factory
override fun <T:ViewModel> create(modelClass: Class<T>):T{
if(modelClass.isAssignableFrom(CalfViewModel::class.java)){
@Suppress("UNCHECKED_CAST")
return CalfViewModel(repository) as T
}
throw IllegalArgumentException("UNKNOWN VIEW MODEL CLASS")
}
create()
메서드를 재정의하고 일부 오류 처리를 수행한 다음 ViewModel 클래스의 인스턴스를 반환하는 것입니다ViewModelProvider.Factory는 실제로 무엇을 합니까?
결론
Reference
이 문제에 관하여(Android Quicky: Kotlin의 ViewModelProvider.Factory), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theplebdev/android-quicky-viewmodelproviderfactory-in-kotlin-191a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)