쏭식
Ssongcode;
쏭식
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • JAVA (21)
      • Basic (21)
    • Kotlin (14)
      • Basic (14)
    • Android (64)
      • Basic (24)
      • JETPACK (30)
      • Compose (8)
      • 파고들기 (2)
    • Project (4)
    • etc (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • AAC
  • Adapter
  • Android
  • mvvm
  • livedata
  • 상속
  • 코테
  • 메소드
  • workmanager
  • compose
  • 자바
  • 컴포즈
  • Kotlin
  • 코틀린
  • 객체지향
  • 코틀린코테
  • Room
  • 코드업100제
  • 백준
  • 자료구조
  • 변수
  • ViewModel
  • 리사이클러뷰
  • 기초100제
  • DataBinding
  • 배열
  • 알고리즘
  • 코딩테스트
  • 프로젝트회고
  • Jetpack

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
쏭식

Ssongcode;

Android/JETPACK

[JETPACK개론] ViewModelFactory

2022. 8. 16. 23:59

ViewModelFactory

안드로이드 개발을 하면서 네트워크 통신을 하거나 localDB, room SQLite 등을 포함하여

데이터를 ViewModel로 넘겨주고 싶을 때 안드로이드 Factory클래스를 이용할 수 있다. 

 

간단히 int형 숫자 하나를 전달하는 ViewModel을 만들어 테스트해보자.

class MainViewModel(num : Int) : ViewModel() {

    init{
        Log.d("MainViewModel" , num.toString())
    }

숫자 하나를 받은 ViewModel 클래스이다.

이제 Factory클래스를 이용해 ViewModel에 원하는 파라메터를 넣어 생성하는 방법을 이용해보자!

class MainViewModelFactory(private val num : Int) : ViewModelProvider.Factory {
    override fun <T : ViewModel?> create(modelClass: Class<T>): T {
        if(modelClass.isAssignableFrom(MainViewModel::class.java)){
            return MainViewModel(num) as T
        }
        throw IllegalArgumentException("error")
    }
}

액티비티에서 숫자하나를 Factory를 이용하여 MainViewModel에 넘겨주는 코드이다!

마지막으로 MainActivity에서 다음과 같이 코드를 작성해주면 끝!

class MainActivity : AppCompatActivity() {

    lateinit var viewModel : MainViewModel
    lateinit var viewModelFactory: MainViewModelFactory

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        //값을 넘겨줌
        viewModelFactory = MainViewModelFactory(5000)
        viewModel = ViewModelProvider(this, viewModelFactory).get(MainViewModel::class.java)
    }
}

5000이라는 값을 viewModelFactory를 통해 viewModel에 안정적으로 전달할 수 있게 되었다!!

 

 

 

GitHub - SsongSik/JetPack_Android_Practice: Android practice using the Jetpack library

Android practice using the Jetpack library. Contribute to SsongSik/JetPack_Android_Practice development by creating an account on GitHub.

github.com

 

저작자표시 (새창열림)

'Android > JETPACK' 카테고리의 다른 글

[JETPACK개론] LiveData 와 MutableLiveData  (0) 2022.08.18
[JETPACK개론] LiveData  (0) 2022.08.17
[JETPACK개론] Activity/Fragment 의 ViewModel 공유  (0) 2022.08.12
[JETPACK개론] ViewModel ?  (0) 2022.08.11
[JETPACK개론] View,DataBinding + Adapter  (0) 2022.08.10
    'Android/JETPACK' 카테고리의 다른 글
    • [JETPACK개론] LiveData 와 MutableLiveData
    • [JETPACK개론] LiveData
    • [JETPACK개론] Activity/Fragment 의 ViewModel 공유
    • [JETPACK개론] ViewModel ?
    쏭식
    쏭식

    티스토리툴바