WEBVTT

00:00.140 --> 00:03.440
Wir haben die Raumdatenbank und das Repository erstellt.

00:03.440 --> 00:06.110
In diesem Video werden wir das Ansichtsmodell erstellen.

00:06.110 --> 00:13.460
Der Zweck des Ansichtsmodells besteht darin, die für eine Aktivität oder ein Fragment erforderlichen Informationen zu erfassen und

00:13.460 --> 00:14.360
zu speichern.

00:14.360 --> 00:18.050
Sie dient als Verbindung zwischen dem Modell und der Ansicht.

00:18.050 --> 00:21.920
Sie ist für die Umwandlung der Daten aus dem Modell zuständig.

00:21.920 --> 00:24.500
Sie stellt der Ansicht Datenströme zur Verfügung.

00:24.500 --> 00:29.450
Die Aktivität oder das Fragment sollte in der Lage sein, Änderungen im Ansichtsmodell zu beobachten.

00:29.450 --> 00:36.980
View-Modelle stellen diese Informationen in der Regel über Live-Daten oder Android-Datenbindung zur Verfügung.

00:36.980 --> 00:40.310
Wechseln wir in Android Studio und erstellen wir unser Ansichtsmodell.

00:40.310 --> 00:46.280
Erstellen Sie eine neue Java-Klasse, die ich als mein Ansichtsmodell bezeichnen werde.

00:46.280 --> 00:51.830
Und typischerweise müssen wir das Ansichtsmodell von Android Lifecycle erweitern.

00:51.830 --> 00:58.130
Aber wenn wir das Repository öffnen, muss ich dieses Repository initialisieren. Um es zu initialisieren,

00:58.130 --> 01:03.090
muss ich seinen Konstruktor aufrufen und eine Anwendung als Parameter übergeben.

01:03.090 --> 01:11.070
Wenn Sie den Kontext innerhalb Ihres View-Modells verwenden müssen, sollten Sie das Android View-Modell AVM anstelle

01:11.070 --> 01:15.750
eines View-Modells verwenden, da es den Anwendungskontext enthält.

01:15.750 --> 01:17.820
Ich werde Ihnen das Problem hier zeigen.

01:17.820 --> 01:25.620
Ich brauche zu initialisieren und erstellen Sie eine Instanz aus dem Repository, mein Repository und im Konstruktor

01:25.620 --> 01:33.390
dieses Ansichtsmodells muss ich es dieses Repository gleich neue Repository initialisieren.

01:33.390 --> 01:37.920
Und hier muss ich einen Parameter vom Typ application übergeben.

01:37.920 --> 01:46.470
Hier ist das Problem, wo ich die Anwendung erhalten kann, erhalten Anwendungskontext, die Ansicht Punkt, erhalten Anwendungskontext.

01:46.500 --> 01:50.310
Ich kann nichts verwenden, um die Anwendungsinstanz zu erhalten.

01:50.310 --> 01:56.760
Die Lösung besteht also darin, vom Ansichtsmodell zum Android-Ansichtsmodell zu wechseln.

01:56.760 --> 02:04.050
Android View Model-Klasse ist eine Unterklasse eines View-Modells und ähnlich wie sie sind sie entworfen, um zu speichern und zu verwalten

02:04.050 --> 02:10.830
UI-bezogene Daten, die verantwortlich sind, um vorzubereiten und bieten Daten für die UI und automatisch ermöglichen Daten

02:10.830 --> 02:17.010
zu überleben Konfigurationsänderungen, so dass ich einen neuen Konstruktor verwenden können.

02:17.080 --> 02:23.340
Alt+ Einfügen Konstruktor mein Repository und Sie können sehen, meine Anwendung übergeben wird.

02:23.370 --> 02:28.050
Okay, dieser Konstruktor erhält also die Anwendung und ein Repository.

02:28.050 --> 02:36.960
Ich werde dieses Repository entfernen, weil ich es hier gleich dem neuen Repository initialisieren und die Anwendung als

02:36.960 --> 02:39.090
Parameter übergeben muss.

02:39.090 --> 02:42.900
So verwenden wir also das Android-Ansichtsmodell.

02:42.900 --> 02:49.290
Auch hier ist das Android-Ansichtsmodell eine Unterklasse des Ansichtsmodells, das zum Speichern und Verwalten von UI-bezogenen Daten bestimmt

02:49.290 --> 02:49.830
ist.

02:49.860 --> 02:53.460
Dann muss ich die Live-Daten erstellen.

03:00.390 --> 03:08.340
Und diese Live-Daten-Instanz, alle Kontakte wird das Repository Punkt aufrufen, erhalten alle Kontakte Methode diese Methode,

03:08.340 --> 03:14.340
erhalten alle Kontakte und geben Sie die Daten und speichern Sie es innerhalb der Live-Daten.

03:14.340 --> 03:25.080
Also öffentliche Live-Daten vom Typ Liste der Kontakte Datentyp Holen Sie sich alle Kontakte dann alle Kontakte.

03:25.110 --> 03:30.100
Live-Daten gleich Repository-Punkt erhalten alle Kontakte.

03:30.120 --> 03:38.610
Wie Sie sehen, verwende ich das Repository, um alle Kontakte zu erhalten, und führe diese Methode aus, die alle Kontakte zurückgibt.

03:38.610 --> 03:43.350
Auch ich habe in diesem Repository andere Methoden.

03:43.350 --> 03:45.690
Kontakt hinzufügen und Kontakt löschen.

03:45.690 --> 03:54.420
Ich werde also ViewModel verwenden, um diese Methoden zu erstellen, und die Methoden des Repository public void aufrufen.

03:54.420 --> 03:59.640
Neuen Kontakt hinzufügen und ich muss ein Kontaktobjekt übergeben.

03:59.640 --> 04:06.130
Wie Sie sehen können, verwende ich meine Repository-Instanz, um die Funktionen aufzurufen und auszuführen.

04:06.160 --> 04:10.780
Kontakt hinzufügen public void delete contact.

04:10.780 --> 04:18.220
Ich muss Kontakte Objekt übergeben und es verwenden, um das Repository auszuführen, löschen Sie Kontakt-Methode und übergeben

04:18.220 --> 04:19.540
Sie den Kontakt.

04:19.540 --> 04:23.530
Diese Klasse wird also die Daten für die Benutzeroberfläche bereitstellen.

04:23.560 --> 04:30.130
Live-Daten werden verwendet, um Änderungen in den Benutzerdaten zu beobachten und die Benutzeroberfläche automatisch zu aktualisieren,

04:30.130 --> 04:36.220
wenn sich Daten ändern, und Kontakte können über das ViewModel in die Raumdatenbank eingefügt und auch gelöscht werden.

04:36.220 --> 04:44.620
Diese Mvvm-Architektur sorgt für eine Trennung der Bereiche, macht den Code wartungsfreundlicher und gewährleistet eine reaktionsschnelle und aktuelle

04:44.620 --> 04:46.030
Benutzeroberfläche.

04:46.060 --> 04:52.600
Das ViewModel fungiert als Brücke zwischen der Benutzeroberfläche und der Datenquelle, d. h. der Raumdatenbank in unserer Anwendung,

04:52.600 --> 04:57.430
und erleichtert so die Verwaltung von Daten und Benutzeroberflächeninteraktionen.
