WEBVTT

1
00:00.960 --> 00:01.880
Bentornati.

2
00:01.880 --> 00:03.760
Continuiamo con il repository.

3
00:03.760 --> 00:12.320
E all'interno di questo pacchetto creare
una nuova classe Kotlin chiamata
implementazione del Weather Repository.

4
00:12.480 --> 00:18.480
Questa classe si estende dall'interfaccia
del Weather Repository.

5
00:18.480 --> 00:26.120
Voglio che vi concentriate con me perché
questa è una lezione molto importante e
contiene molte informazioni.

6
00:26.120 --> 00:29.560
Questa è l'implementazione del repository
meteo.

7
00:29.560 --> 00:38.400
La classe vera e propria che contiene la
logica per il recupero dei dati meteo e il
repository meteo

8
00:38.400 --> 00:47.280
significa che questa classe implementa
l'interfaccia del repository meteo, quindi
deve definire tutti i metodi di tale
interfaccia.

9
00:47.280 --> 00:51.840
Non implementerò ora i membri, che sono
questi due metodi.

10
00:52.120 --> 00:53.640
Si tratta di dati fittizi.

11
00:53.680 --> 01:03.420
I dati meteo di Private Val sono uguali a
quelli della mappa di e creiamo alcuni
dati fittizi.

12
01:27.380 --> 01:28.340
Ed eccoci qui.

13
01:28.380 --> 01:32.540
Questo è il nostro dato fittizio, che è un
dato meteorologico.

14
01:32.580 --> 01:33.140
Ok.

15
01:33.740 --> 01:37.220
Ora permettetemi di implementare i membri.

16
01:37.220 --> 01:44.180
Le due funzioni Delta più enter per
implementare i membri, get weather for
location e get all locations.

17
01:44.180 --> 01:47.180
Questi sono i metodi dell'interfaccia del
deposito meteo.

18
01:47.180 --> 01:49.420
Fare clic su OK ed ecco che si parte.

19
01:49.460 --> 01:55.020
Ora dobbiamo tornare a ottenere il tempo
per la posizione qui.

20
01:55.060 --> 01:59.200
Restituire i dati meteo per una
determinata località Restituire.

21
01:59.400 --> 02:00.480
Info meteo.

22
02:00.640 --> 02:04.440
Posizione zero e sconosciuta.

23
02:04.600 --> 02:13.560
Questa funzione restituisce informazioni
per la posizione data o per il valore
predefinito, che è zero o sconosciuto.

24
02:13.560 --> 02:15.880
Abbiamo quindi due stati.

25
02:15.920 --> 02:22.760
O si va a prendere la località e si
forniscono le informazioni sul tempo
all'interno di questa località, o

26
02:22.760 --> 02:31.600
si va a restituire un valore predefinito
che è temperatura zero e descrizione
sconosciuta per una data località.

27
02:31.600 --> 02:36.640
Ad esempio, abbiamo New York, Londra,
Tokyo, Parigi e Sydney.

28
02:36.880 --> 02:46.040
Se specifico Colorado o questo non è
incluso nei nostri dati fittizi, quindi
restituisce un valore predefinito.

29
02:46.080 --> 02:52.960
Località Colorado temperatura zero e
descrizione sconosciuta perché

30
02:53.000 --> 02:53.440
non è elencata nei nostri dati fittizi.

31
02:53.480 --> 02:54.000
Ok.

32
02:54.160 --> 03:04.460
La seconda cosa che dobbiamo restituire è
ottenere tutte le posizioni, sia che si
tratti di dati, sia che si tratti di
chiavi puntiformi, sia che si tratti di un
elenco.

33
03:04.460 --> 03:07.220
Quindi dobbiamo ottenere tutte le
posizioni.

34
03:07.260 --> 03:11.620
Mi riferisco ai dati meteo e
all'ottenimento di tutte le chiavi.

35
03:11.660 --> 03:15.820
Queste sono le chiavi e questi sono i
valori.

36
03:15.860 --> 03:20.300
Ok, sto mappando New York su questo
oggetto di informazioni meteo.

37
03:20.300 --> 03:22.580
Questa è la chiave e questo è il valore.

38
03:22.580 --> 03:24.460
Questa è la chiave e questo è il valore.

39
03:24.500 --> 03:26.580
Qui ricevo tutte le chiavi.

40
03:26.580 --> 03:31.140
Quindi, New York, Londra, Tokyo, Parigi e
Sydney vanno bene.

41
03:31.180 --> 03:37.220
L'ultima cosa da specificare è
l'implementazione del repository meteo.

42
03:37.220 --> 03:43.540
Aggiungo una nuova annotazione chiamata
iniettare il costruttore Alt+.

43
03:43.540 --> 03:47.020
Immettere per importare l'oggetto da
Javax.

44
03:47.060 --> 03:47.900
Iniettare il punto.

45
03:47.940 --> 03:49.020
Iniettare la classe.

46
03:49.020 --> 03:50.620
Iniettare il costruttore.

47
03:50.660 --> 03:56.350
Fa parte di hilt o dagger e indica il
sistema di iniezione delle dipendenze.

48
03:56.350 --> 03:59.190
Come creare un'istanza di classe.

49
03:59.190 --> 04:00.950
Come funziona.

50
04:00.950 --> 04:08.950
In parole povere si sta dicendo Ehi Hilde,
puoi creare questa classe automaticamente
usando questo costruttore.

51
04:08.950 --> 04:19.510
Quindi, quando si usa il costruttore
inject per rendere Hilde in grado di
fornire

52
04:19.550 --> 04:28.190
questa classe come dipendenza senza
doverla impostare manualmente come un
modulo, significa che

53
04:28.190 --> 04:33.990
Hilde può iniettare l'implementazione del
repository ovunque, l'interfaccia, se il
repository è necessario.

54
04:34.030 --> 04:42.630
Non è necessario scrivere metodi provides
o binds in un modulo Hilde, a meno che non
si stia facendo qualcosa di
personalizzato.

55
04:42.670 --> 04:43.630
Un'ultima cosa.

56
04:43.630 --> 04:45.230
È necessario menzionarlo qui.

57
04:45.270 --> 04:53.790
Sotto il cofano, quando Hilde vede
l'annotazione inject constructor, aggiunge
questa classe al grafo delle dipendenze.

58
04:53.790 --> 05:03.170
Sa come costruirlo automaticamente e, se
ha dei

59
05:03.450 --> 05:05.010
parametri del costruttore, hilt risolverà
anche queste dipendenze.

60
05:05.170 --> 05:13.370
Quindi, per esempio, se questo meteo nel
nostro repository ha bisogno del

61
05:13.410 --> 05:19.890
servizio API privato val e creiamo una
classe di servizio API meteo.

62
05:20.210 --> 05:26.650
L'implementazione di questo repository
meteo dipende dal servizio API, ma grazie
per il suggerimento.

63
05:26.650 --> 05:35.890
Se si utilizza il costruttore di inject,
possiamo utilizzare

64
05:35.890 --> 05:37.130
direttamente e automaticamente hilt e
fornirci il servizio API.

65
05:37.730 --> 05:45.130
Ogni volta che si usa il costruttore
inject, hilt aggiungerà questa classe al
grafo delle dipendenze.

66
05:45.170 --> 05:53.390
Sa come costruirlo automaticamente e se il
costruttore ha

67
05:53.390 --> 05:56.070
dei parametri, Hilt Health risolverà anche
queste dipendenze.

68
05:56.070 --> 06:04.550
Quindi hilt cercherà di capire come
fornire il servizio

69
06:04.550 --> 06:05.470
API meteo e iniettarlo automaticamente
nell'implementazione del repository meteo.

70
06:05.470 --> 06:12.030
Ma in questo esempio e in questa
applicazione, non useremo parametri
all'interno di questo costruttore.

71
06:12.070 --> 06:15.590
Hilt fornirà l'implementazione del
repository meteo.

72
06:15.630 --> 06:16.150
Ok.

73
06:16.350 --> 06:20.550
Questa è l'implementazione del nostro
repository meteo.

74
06:20.550 --> 06:24.270
Abbiamo creato dati fittizi a scopo
dimostrativo.

75
06:24.270 --> 06:31.550
Abbiamo implementato i due metodi
ereditati da Weather Repository e forniamo
il meteo

76
06:31.590 --> 06:35.590
per quei dati usando la coppia
chiave-valore e il valore predefinito qui.

77
06:35.590 --> 06:44.430
L'ultima cosa e l'ultimo passo che abbiamo
fatto è stato aggiungere il costruttore
inject, che

78
06:44.430 --> 06:49.470
dice a hilt di fornire questa classe come
dipendenza, senza bisogno di una
configurazione manuale.


