package Ġcom . mv vm . weather app Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . mv vm . weather app . data . repository . Repository Ċ import Ġcom . mv vm . weather app . ui . Shared Main ViewModel Ċ import Ġcom . mv vm . weather app . ui . detail . Detail ViewModel Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠViewModel Provider Factory Ġ@ Inject Ġconstructor ( private Ġval Ġrepository : ĠRepository ) Ġ: ĊĠĠĠ ĠViewModel Provider . Factory Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠViewModel ?> Ġcreate ( model Class : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( model Class . isAssignableFrom ( Shared Main ViewModel :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠShared Main ViewModel ( repository ) Ġas ĠT ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( model Class . isAssignableFrom ( Detail ViewModel :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDetail ViewModel ( repository ) Ġas ĠT ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Unknown ĠViewModel Ġclass : Ġ" Ġ+ Ġmodel Class . name ); ĊĠĠĠ Ġ} Ċ } ĊĊ