Bentornati.
Abbiamo creato il modello di vista del nodo che si estende dalla classe del modello di vista.
Quindi questa classe fungerà da modello di vista.
Per impostazione predefinita.
La classe del fornitore del modello di vista in Android supporta solo
la creazione di istanze del modello di vista utilizzando il costruttore predefinito.
Ad esempio, un costruttore senza parametri.
Quindi, se rimuoviamo questo parametro, il repository sarà in grado di usare
la classe ViewModel provider per creare istanze di questo modello di vista.
Ma poiché abbiamo il repository come parametro all'interno del costruttore del modello di vista, dobbiamo
creare una classe personalizzata che ci permetta di creare istanze di questo modello di vista.
Per questo dobbiamo andare nel pacchetto del modello di vista.
Creare una nuova classe Kotlin.
Abbiamo bisogno di una fabbrica di modelli di vista ok nota fabbrica di modelli di vista.
Qui dobbiamo passare il repository.
Dobbiamo passare parametri simili a quelli del modello di visualizzazione delle note ed estenderlo dal modello di visualizzazione.
Fabbrica di punti della classe Provider.
Il factory del modello di vista delle note viene utilizzato per.
Crea istanze di un modello di vista con un parametro specifico.
Per impostazione predefinita, la classe ViewModel o ViewModel provider in Android
supporta solo la creazione di istanze ViewModel utilizzando il costruttore predefinito.
Un costruttore senza parametri.
Se il modello di vista richiede parametri aggiuntivi, come un repository
o un contesto, in questo caso abbiamo bisogno di un repository.
È necessario creare un factory di provider ViewModel per gestire l'istanziazione.
Questa è una nota molto importante, poiché stiamo passando un parametro del repository all'interno del modello
di vista della nota, dobbiamo creare un factory ViewModel della nota per fornire un'istanza del ViewModel.
E all'interno di questo factory, sovrascriveremo il metodo create.
Sovrascrive il metodo create.
Cliccare su enter ed ecco che si parte.
Ma non abbiamo bisogno della funzione create con questi extra.
Rimuoverlo e creare nuovamente e utilizzare la funzione create che contiene solo la classe del modello come parametro.
Non preoccupatevi, non faremo un'immersione profonda nella creazione.
È sufficiente capire che questo metodo è un metodo dell'interfaccia ViewModel provider dot factory.
Il tipo D indica che questo metodo è generico e può creare qualsiasi tipo di ViewModel.
Quindi al suo interno dobbiamo creare un blocco if.
Se il modello di classe dot è assegnabile dalla nota ViewModel di classe dot Java, allora restituisce la nota ViewModel.
Passare il repository il repository notes ViewModel crea una nuova istanza di notes Un ViewModel con un
repository fornito come T esegue il cast dell'istanza di ViewModel notes creata in un tipo generico.
Questo cast è necessario perché la firma del metodo indica che esso restituirà un'istanza di tipo T.
Premere alt più.
Inserire l'avviso del compilatore per le opzioni di cast non selezionate.
Dobbiamo aggiungerlo alla dichiarazione.
Questa annotazione sopprime gli avvisi del compilatore relativi ai cast non controllati.
Qui è sicuro, perché il controllo precedente assicura che la classe modale sia destinata a
essere una nota ViewModel o una sua sottoclasse, altrimenti dobbiamo lanciare un'eccezione di argomento illegale.
Classe ViewModel sconosciuta.
Se la classe modale non è assegnabile dalle note
ViewModel, il metodo lancia un'eccezione di argomento illegale.
Questo assicura che il factory fallisca rapidamente se riceve una richiesta di
creazione di una classe del modello di vista sconosciuta o non supportata.
Ancora una volta, ragazzi, lo scopo di questa classe factory è di permetterci di creare un'istanza
di una classe modello di vista nota modello di vista con dipendenza dal repository delle note.
Il metodo create è generico e può creare qualsiasi tipo di modello di vista.
Controlla se la classe del modello richiesta è un modello di vista o una sua sottoclasse.
Se il controllo viene superato, viene creata e restituita un'istanza di note.
Visualizza il modello.
Se la classe del modello richiesta non è supportata, viene lanciata un'eccezione di argomento illegale.
Questo modello di factory è essenziale per iniettare le dipendenze nel modello
di vista e mantenere una separazione pulita delle preoccupazioni nell'architettura dell'applicazione.