WEBVTT

1
00:01.480 --> 00:02.480
Bentornati.

2
00:02.520 --> 00:05.560
Continuiamo con il nostro modello di vista
meteo.

3
00:05.760 --> 00:09.920
Qui dobbiamo estendere il modello della
vista.

4
00:10.440 --> 00:16.680
Questo indica ad Android Studio che questa
classe fungerà da ViewModel per la nostra
applicazione.

5
00:16.720 --> 00:22.720
Scorrere verso il basso e iniziare con le
posizioni di caricamento del blocco di
init.

6
00:22.760 --> 00:26.200
Creare una funzione denominata load
locations.

7
00:26.200 --> 00:34.600
Utilizziamo questo blocco init per
caricare le posizioni quando il ViewModel
viene creato all'interno della funzione
load locations.

8
00:34.600 --> 00:38.840
Iniziare con ViewModel scoop dot launch.

9
00:38.880 --> 00:47.840
Dobbiamo usare le coroutine, lo scoop di
ViewModel per ottenere tutti gli elenchi
di luoghi dal repository.

10
00:47.840 --> 00:57.920
Quindi, qui l'elenco delle località
equivale al repository meteo punto

11
00:57.920 --> 00:59.440
get all locations punto value equivale
all'elenco delle località.

12
00:59.440 --> 01:03.920
Qui stiamo aggiornando il flusso di stati
mutabili dei luoghi.

13
01:04.160 --> 01:10.590
Ok, allora dobbiamo verificare che
l'elenco delle località non sia vuoto.

14
01:10.910 --> 01:14.510
Quindi aggiornare nuovamente l'elenco
delle località.

15
01:14.510 --> 01:23.510
Ragazzi, grazie al completamento del
codice di Android Studio I, che è un nuovo

16
01:23.510 --> 01:27.310
strumento introdotto per completare e
suggerire alcuni codici per voi durante la
codifica.

17
01:27.470 --> 01:34.470
Qui si ottiene un elenco di città dal
repository, si aggiorna lo stato delle

18
01:34.470 --> 01:39.630
località e si sceglie automaticamente la
prima località per cui caricare le
informazioni meteo.

19
01:39.710 --> 01:45.910
Creo una nuova funzione chiamata Load
Weather for location.

20
01:49.110 --> 01:51.470
ViewModel scoop dot launch.

21
01:51.990 --> 02:02.750
E qui dobbiamo iniziare con il valore del
punto di stato UI uguale al punto di
caricamento dello stato UI del tempo.

22
02:03.190 --> 02:09.310
In un'applicazione reale si tratterebbe di
una chiamata asincrona.

23
02:09.590 --> 02:19.590
Utilizzando le informazioni meteo di val
equivale al repository dot meteo ottenere

24
02:19.590 --> 02:20.740
il tempo per la posizione e passare la
posizione tranquilla richiesta.

25
02:20.780 --> 02:29.180
Il valore del punto di stato
dell'interfaccia utente è uguale al
successo del punto di stato
dell'interfaccia utente.

26
02:29.420 --> 02:32.620
Passare la variabile delle informazioni
meteo.

27
02:32.780 --> 02:39.220
Ok, stiamo aggiornando l'interfaccia
utente per il caricamento.

28
02:39.220 --> 02:47.940
Quindi il primo passo è impostare
l'interfaccia utente sul caricamento,
quindi ottenere i dati

29
02:47.940 --> 02:55.420
meteo per la località richiesta, l'ultima
località come parametro per la funzione
load

30
02:55.420 --> 03:00.340
weather for location e quindi aggiornare
l'interfaccia utente con le nuove
informazioni meteo.

31
03:00.500 --> 03:09.340
Se si trattasse di una chiamata da una
vera API, si aggiungerebbe la gestione
degli errori

32
03:09.380 --> 03:11.980
e forse si potrebbero catturare le
eccezioni per emettere un errore di stato
dell'interfaccia utente.

33
03:12.020 --> 03:15.220
Ok, questa è una nota molto importante.

34
03:15.220 --> 03:16.620
Ne parlerò qui.

35
03:16.820 --> 03:24.580
In un'applicazione reale si tratterebbe di
una chiamata asincrona.

36
03:24.980 --> 03:25.580
Ok.

37
03:25.620 --> 03:27.300
Si dovrebbe usare try e catch.

38
03:27.300 --> 03:35.960
Ma dal momento che i nostri dati sono
all'interno dei dati meteo
dell'implementazione del repository meteo.

39
03:35.960 --> 03:37.280
È molto semplice.

40
03:37.280 --> 03:41.000
È locale, quindi non c'è bisogno di fare
tentativi di cattura.

41
03:41.160 --> 03:41.680
Ok.

42
03:41.960 --> 03:47.360
Ma nelle applicazioni reali, si dovrebbero
usare try e catch e renderli sincroni.

43
03:47.480 --> 03:48.040
Ok.

44
03:48.200 --> 03:55.680
Un'ultima funzione che dobbiamo creare si
chiama funzione posizione selezionata.

45
03:55.680 --> 04:03.560
E si può notare che non è privata, perché
dobbiamo chiamarla dall'esterno della
stringa di localizzazione.

46
04:03.920 --> 04:10.600
Qui si imposta il punto valore della
località selezionata e si carica il meteo
per la località.

47
04:10.600 --> 04:13.520
Perché abbiamo creato questa funzione.

48
04:13.560 --> 04:22.560
Viene chiamato quando l'utente sceglie una
città diversa o

49
04:22.560 --> 04:23.800
quando l'utente seleziona e sceglie una
città diversa.

50
04:23.800 --> 04:29.400
Quindi la funzione di localizzazione
selezionata sarà richiamata quando
l'utente sceglierà una città diversa.

51
04:29.440 --> 04:35.520
Inoltre, aggiorna la città selezionata e
recupera nuovi dati meteo.

52
04:35.800 --> 04:40.350
Ok, questo è tutto per il modello di vista
meteo.

53
04:40.590 --> 04:48.590
Ricapitolando, abbiamo introdotto il
repository all'interno del costruttore e
usiamo l'annotazione inject, che abbiamo
esteso

54
04:48.590 --> 04:56.310
da ViewModel e che dice ad Android Studio
che questo ViewModel meteo agirà come
ViewModel.

55
04:56.310 --> 05:04.510
Inoltre, diciamo a hilt che questa classe
agirà come

56
05:04.510 --> 05:04.630
ViewModel, annotandola con hilt ViewModel
al suo interno.

57
05:04.670 --> 05:11.390
Abbiamo creato le tre variabili UI state,
locations e selected locations e abbiamo
creato

58
05:11.390 --> 05:17.710
tre funzioni che caricano le locations,
caricano tutte le locations e impostano il
default.

59
05:17.710 --> 05:21.430
La prima è la prima sede, che è New York.

60
05:21.470 --> 05:27.590
Il tempo di carico per la posizione viene
ottenuto e caricato lo stato
dell'interfaccia utente.

61
05:27.590 --> 05:32.190
Nelle applicazioni reali si tratta di una
chiamata sincrona.

62
05:32.310 --> 05:38.790
La località selezionata viene richiamata
quando l'utente sceglie una città diversa,

63
05:38.790 --> 05:40.990
aggiorna la località selezionata e carica
i nuovi dati meteo.

64
05:41.350 --> 05:43.990
Questo è tutto per il nostro modello di
vista.


