WEBVTT

1
00:00.860 --> 00:01.850
Bentornati.

2
00:01.850 --> 00:06.590
Abbiamo creato il modello di vista del
nodo che si estende dalla classe del
modello di vista.

3
00:06.590 --> 00:09.890
Quindi questa classe fungerà da modello di
vista.

4
00:09.890 --> 00:10.940
Per impostazione predefinita.

5
00:10.940 --> 00:18.950
La classe del fornitore del modello di
vista in Android supporta solo

6
00:18.950 --> 00:20.420
la creazione di istanze del modello di
vista utilizzando il costruttore
predefinito.

7
00:20.420 --> 00:23.420
Ad esempio, un costruttore senza
parametri.

8
00:23.420 --> 00:32.000
Quindi, se rimuoviamo questo parametro, il
repository sarà in grado di usare

9
00:32.030 --> 00:34.550
la classe ViewModel provider per creare
istanze di questo modello di vista.

10
00:34.550 --> 00:41.240
Ma poiché abbiamo il repository come
parametro all'interno del costruttore del
modello di vista, dobbiamo

11
00:41.240 --> 00:48.200
creare una classe personalizzata che ci
permetta di creare istanze di questo
modello di vista.

12
00:48.200 --> 00:51.470
Per questo dobbiamo andare nel pacchetto
del modello di vista.

13
00:51.470 --> 00:53.450
Creare una nuova classe Kotlin.

14
00:53.450 --> 00:58.250
Abbiamo bisogno di una fabbrica di modelli
di vista ok nota fabbrica di modelli di
vista.

15
00:58.280 --> 01:01.100
Qui dobbiamo passare il repository.

16
01:01.130 --> 01:08.650
Dobbiamo passare parametri simili a quelli
del modello di visualizzazione delle note
ed estenderlo dal modello di
visualizzazione.

17
01:08.680 --> 01:11.860
Fabbrica di punti della classe Provider.

18
01:11.860 --> 01:15.370
Il factory del modello di vista delle note
viene utilizzato per.

19
01:15.400 --> 01:19.990
Crea istanze di un modello di vista con un
parametro specifico.

20
01:19.990 --> 01:27.520
Per impostazione predefinita, la classe
ViewModel o ViewModel provider in Android

21
01:27.520 --> 01:31.240
supporta solo la creazione di istanze
ViewModel utilizzando il costruttore
predefinito.

22
01:31.270 --> 01:33.790
Un costruttore senza parametri.

23
01:33.790 --> 01:41.920
Se il modello di vista richiede parametri
aggiuntivi, come un repository

24
01:41.920 --> 01:43.780
o un contesto, in questo caso abbiamo
bisogno di un repository.

25
01:43.810 --> 01:50.020
È necessario creare un factory di provider
ViewModel per gestire l'istanziazione.

26
01:50.020 --> 01:57.700
Questa è una nota molto importante, poiché
stiamo passando un parametro del
repository all'interno del modello

27
01:57.700 --> 02:02.680
di vista della nota, dobbiamo creare un
factory ViewModel della nota per fornire
un'istanza del ViewModel.

28
02:02.680 --> 02:08.130
E all'interno di questo factory,
sovrascriveremo il metodo create.

29
02:08.160 --> 02:10.590
Sovrascrive il metodo create.

30
02:10.590 --> 02:12.630
Cliccare su enter ed ecco che si parte.

31
02:12.630 --> 02:17.430
Ma non abbiamo bisogno della funzione
create con questi extra.

32
02:17.430 --> 02:25.440
Rimuoverlo e creare nuovamente e
utilizzare la funzione create che contiene
solo la classe del modello come parametro.

33
02:25.440 --> 02:28.830
Non preoccupatevi, non faremo
un'immersione profonda nella creazione.

34
02:28.830 --> 02:36.690
È sufficiente capire che questo metodo è
un metodo dell'interfaccia ViewModel
provider dot factory.

35
02:36.690 --> 02:43.230
Il tipo D indica che questo metodo è
generico e può creare qualsiasi tipo di
ViewModel.

36
02:43.230 --> 02:47.490
Quindi al suo interno dobbiamo creare un
blocco if.

37
02:47.490 --> 02:59.820
Se il modello di classe dot è assegnabile
dalla nota ViewModel di classe dot Java,
allora restituisce la nota ViewModel.

38
02:59.850 --> 03:09.850
Passare il repository il repository notes
ViewModel crea una nuova istanza di notes
Un ViewModel con un

39
03:09.850 --> 03:18.490
repository fornito come T esegue il cast
dell'istanza di ViewModel notes creata in
un tipo generico.

40
03:18.490 --> 03:26.140
Questo cast è necessario perché la firma
del metodo indica che esso restituirà
un'istanza di tipo T.

41
03:26.170 --> 03:27.190
Premere alt più.

42
03:27.190 --> 03:30.640
Inserire l'avviso del compilatore per le
opzioni di cast non selezionate.

43
03:30.640 --> 03:33.370
Dobbiamo aggiungerlo alla dichiarazione.

44
03:33.370 --> 03:39.730
Questa annotazione sopprime gli avvisi del
compilatore relativi ai cast non
controllati.

45
03:39.730 --> 03:47.710
Qui è sicuro, perché il controllo
precedente assicura che la classe modale
sia destinata a

46
03:47.710 --> 03:54.190
essere una nota ViewModel o una sua
sottoclasse, altrimenti dobbiamo lanciare
un'eccezione di argomento illegale.

47
03:54.190 --> 03:56.440
Classe ViewModel sconosciuta.

48
03:56.440 --> 04:05.230
Se la classe modale non è assegnabile
dalle note

49
04:05.230 --> 04:05.950
ViewModel, il metodo lancia un'eccezione
di argomento illegale.

50
04:05.950 --> 04:15.810
Questo assicura che il factory fallisca
rapidamente se riceve una richiesta di

51
04:15.810 --> 04:17.880
creazione di una classe del modello di
vista sconosciuta o non supportata.

52
04:17.910 --> 04:26.070
Ancora una volta, ragazzi, lo scopo di
questa classe factory è di permetterci di
creare un'istanza

53
04:26.070 --> 04:30.990
di una classe modello di vista nota
modello di vista con dipendenza dal
repository delle note.

54
04:30.990 --> 04:37.350
Il metodo create è generico e può creare
qualsiasi tipo di modello di vista.

55
04:37.350 --> 04:43.920
Controlla se la classe del modello
richiesta è un modello di vista o una sua
sottoclasse.

56
04:43.920 --> 04:49.770
Se il controllo viene superato, viene
creata e restituita un'istanza di note.

57
04:49.770 --> 04:50.520
Visualizza il modello.

58
04:50.520 --> 04:58.290
Se la classe del modello richiesta non è
supportata, viene lanciata un'eccezione di
argomento illegale.

59
04:58.290 --> 05:05.610
Questo modello di factory è essenziale per
iniettare le dipendenze nel modello

60
05:05.610 --> 05:11.130
di vista e mantenere una separazione
pulita delle preoccupazioni
nell'architettura dell'applicazione.


