Abbiamo terminato il database delle stanze e il repository.
Abbiamo terminato il livello del modello.
Passiamo ora al livello del modello di vista.
Il livello del modello di vista espone i flussi di dati rilevanti per la vista.
Inoltre, funge da collegamento tra il modello e la vista.
Passiamo ad Android Studio e impariamo di più sui modelli di vista.
All'interno di questo pacchetto, creeremo un altro pacchetto chiamato View Model e all'interno
del pacchetto View model creeremo una nuova classe Kotlin chiamata Note View model.
Il modello di vista separa i dati relativi all'interfaccia utente e la logica di business dal frammento di attività della vista.
Composable promuove un'architettura pulita.
Questa separazione rende il modello di vista indipendente dalla vista, facilitando i test e la manutenzione.
I modelli di vista sono consapevoli del ciclo di vita, cioè sono
progettati per sopravvivere alle modifiche della configurazione, come la rotazione dello schermo.
In questo modo si evita la perdita di dati e l'inutile prefetching dei dati.
Vengono eseguiti durante il ciclo di vita di un'attività o di un frammento,
assicurando che i dati vengano conservati finché il componente dell'interfaccia utente è attivo.
Per dire ad Android Studio che questa classe agirà come ViewModel, dobbiamo ereditare ViewModel.
Alt+.
Inserire per importare il pacchetto dal ciclo di vita di Android X.
Quindi la nostra classe agirà come ViewModel.
Nel costruttore del ViewModel, dobbiamo passare una variabile di tipo repository.
Quindi qui repository privato val note repository ok.
Perché useremo questo repository all'interno del ViewModel per eseguire le funzioni, l'inserimento
e tutte le note simili a quelle che abbiamo fatto nel repository.
Dobbiamo chiamare le funzioni all'interno del ViewModel.
Inizieremo con Val tutti i nodi.
È di tipo LiveData di tipo elenco di nodi uguali.
Per importare il nodo equivale alla variabile del repository che abbiamo creato per tutti i nodi.
Ok.
Quindi chiamiamo questo e il tipo restituito è LiveData di tipo.
Elenco dei nodi.
Analogamente a quanto fatto nel repository, creeremo il ViewModel.
La seconda cosa da creare è la funzione insert node equals to ViewModel.
Scoop dot launch repository dot insert node.
Il ViewModel prepara e gestisce i dati per l'interfaccia utente.
Può interagire con il repository per recuperare i dati e trasformarli come necessario, prima di esporli alla
vista, e usa Is LiveData o altri tipi osservabili per fornire gli aggiornamenti dei dati alla vista.
Consentire alla vista di reagire alle modifiche.
I modelli di visualizzazione automatica mantengono i dati durante le modifiche di configurazione,
evitando di ricaricare i dati dopo ogni rotazione o modifica della configurazione.
L'ambito del modello di vista è un ambito coroutine legato al ciclo di vita del modello di vista.
Questo ambito è fornito dalla classe ViewModel e garantisce che qualsiasi coroutine
lanciata al suo interno venga automaticamente annullata se il ViewModel viene cancellato.
Ad esempio, quando l'interfaccia utente associata non è più in uso e il lancio è
un costruttore di coroutine che lancia una nuova coroutine senza bloccare il thread corrente, questa
coroutine viene eseguita in background, consentendo di eseguire operazioni di lunga durata, come le operazioni
di database, senza bloccare l'interfaccia utente, e questo codice viene eseguito all'interno della coroutine.
Richiama il metodo insert sull'oggetto repository.
Passaggio del parametro nodo.
Il metodo insert esegue l'inserimento effettivo del nodo nel database utilizzando le coroutine.
Questa operazione viene eseguita in modo asincrono, il che significa che
non blocca il thread principale e quindi mantiene l'interfaccia utente reattiva.
Per questo, utilizziamo il ViewModel dot launch, che è
una coroutine, e chiamiamo questo repository dot insert node.
E se torniamo al repository, possiamo vedere che questo nodo insert è una funzione di sospensione.
La funzione Suspend deve essere chiamata all'interno dell'ambito ViewModel.
Utilizzando l'ambito del ViewModel, la coroutine è legata al
ciclo di vita del ViewModel, garantendo la sua cancellazione.
Se il ViewModel viene cancellato.