Bentornati.
Continuiamo con il nostro modello di vista meteo.
Qui dobbiamo estendere il modello della vista.
Questo indica ad Android Studio che questa classe fungerà da ViewModel per la nostra applicazione.
Scorrere verso il basso e iniziare con le posizioni di caricamento del blocco di init.
Creare una funzione denominata load locations.
Utilizziamo questo blocco init per caricare le posizioni quando il ViewModel viene creato all'interno della funzione load locations.
Iniziare con ViewModel scoop dot launch.
Dobbiamo usare le coroutine, lo scoop di ViewModel per ottenere tutti gli elenchi di luoghi dal repository.
Quindi, qui l'elenco delle località equivale al repository meteo punto
get all locations punto value equivale all'elenco delle località.
Qui stiamo aggiornando il flusso di stati mutabili dei luoghi.
Ok, allora dobbiamo verificare che l'elenco delle località non sia vuoto.
Quindi aggiornare nuovamente l'elenco delle località.
Ragazzi, grazie al completamento del codice di Android Studio I, che è un nuovo
strumento introdotto per completare e suggerire alcuni codici per voi durante la codifica.
Qui si ottiene un elenco di città dal repository, si aggiorna lo stato delle
località e si sceglie automaticamente la prima località per cui caricare le informazioni meteo.
Creo una nuova funzione chiamata Load Weather for location.
ViewModel scoop dot launch.
E qui dobbiamo iniziare con il valore del punto di stato UI uguale al punto di caricamento dello stato UI del tempo.
In un'applicazione reale si tratterebbe di una chiamata asincrona.
Utilizzando le informazioni meteo di val equivale al repository dot meteo ottenere
il tempo per la posizione e passare la posizione tranquilla richiesta.
Il valore del punto di stato dell'interfaccia utente è uguale al successo del punto di stato dell'interfaccia utente.
Passare la variabile delle informazioni meteo.
Ok, stiamo aggiornando l'interfaccia utente per il caricamento.
Quindi il primo passo è impostare l'interfaccia utente sul caricamento, quindi ottenere i dati
meteo per la località richiesta, l'ultima località come parametro per la funzione load
weather for location e quindi aggiornare l'interfaccia utente con le nuove informazioni meteo.
Se si trattasse di una chiamata da una vera API, si aggiungerebbe la gestione degli errori
e forse si potrebbero catturare le eccezioni per emettere un errore di stato dell'interfaccia utente.
Ok, questa è una nota molto importante.
Ne parlerò qui.
In un'applicazione reale si tratterebbe di una chiamata asincrona.
Ok.
Si dovrebbe usare try e catch.
Ma dal momento che i nostri dati sono all'interno dei dati meteo dell'implementazione del repository meteo.
È molto semplice.
È locale, quindi non c'è bisogno di fare tentativi di cattura.
Ok.
Ma nelle applicazioni reali, si dovrebbero usare try e catch e renderli sincroni.
Ok.
Un'ultima funzione che dobbiamo creare si chiama funzione posizione selezionata.
E si può notare che non è privata, perché dobbiamo chiamarla dall'esterno della stringa di localizzazione.
Qui si imposta il punto valore della località selezionata e si carica il meteo per la località.
Perché abbiamo creato questa funzione.
Viene chiamato quando l'utente sceglie una città diversa o
quando l'utente seleziona e sceglie una città diversa.
Quindi la funzione di localizzazione selezionata sarà richiamata quando l'utente sceglierà una città diversa.
Inoltre, aggiorna la città selezionata e recupera nuovi dati meteo.
Ok, questo è tutto per il modello di vista meteo.
Ricapitolando, abbiamo introdotto il repository all'interno del costruttore e usiamo l'annotazione inject, che abbiamo esteso
da ViewModel e che dice ad Android Studio che questo ViewModel meteo agirà come ViewModel.
Inoltre, diciamo a hilt che questa classe agirà come
ViewModel, annotandola con hilt ViewModel al suo interno.
Abbiamo creato le tre variabili UI state, locations e selected locations e abbiamo creato
tre funzioni che caricano le locations, caricano tutte le locations e impostano il default.
La prima è la prima sede, che è New York.
Il tempo di carico per la posizione viene ottenuto e caricato lo stato dell'interfaccia utente.
Nelle applicazioni reali si tratta di una chiamata sincrona.
La località selezionata viene richiamata quando l'utente sceglie una città diversa,
aggiorna la località selezionata e carica i nuovi dati meteo.
Questo è tutto per il nostro modello di vista.