/ / onPropertyChanged - So wechseln Sie propertyId von der externen Klasse - Android-Datenbindung

onPropertyChanged - So wechseln Sie propertyId von der externen Klasse - Android-Datenbindung

Ich habe ein Modell, das BaseObservable erweitert. Ich habe ein Ansichtsmodell, das einen Verweis auf das Modell enthält und Eigenschaftsänderungen innerhalb des Modells abonniert. Wie schalte ich die Model.propertyId aus dem Rückruf im Ansichtsmodell ein? Im folgenden Beispiel ist BR.assignedId die Eigenschaft im Modell. Zum Beispiel:

Modell anzeigen

public void onPropertyChanged(Observable sender, int propertyId)
{

switch (propertyId)
{
case MyModel.BR.assignedId://compile error
notifyPropertyChanged(BR.assignedImage);
break;
}
}

Antworten:

0 für die Antwort № 1

Ich schlage vor, das Observer-Muster zu lesen. Der obige Code enthält Entities: Observer und Observable. Observer hat eine Beobachtungsmethode. Jede Klasse, die das "Observable" beobachten möchte, muss sich als "Observer" registrieren. Observable ruft die Beobachtungsmethode auf dem Observer auf, und so funktioniert der normale Rückruf. (Namen von Klassen und Methoden können unterschiedlich sein, ich werde je nach Absicht und Kontext verwendet)

Aktivieren Sie "ViewModel.Die Klasse "java" implementiert eine "Observer" - Schnittstelle, die die Methode "onPropertyChanged ()" hat. Sie müssen das Objekt ViewModel.java in Model.java setzen Wie addPropertyChangeObserver (), obwohl es sich um eine andere, aber ähnliche Methode handeln kann: Verwenden Sie diese Methode, um das Objekt ViewModel.java in Model.java zu setzen.

wenn Sie etwas am Modell ändern möchtenÜberprüfen Sie den Senderparameter. Sie können der von Model implementierten Schnittstelle eine weitere Methode hinzufügen und mit Model Änderungen an Model vornehmen oder den Absender nach der Überprüfung seines Typs mit instanceof typisieren und den Prozess für Model.java über die Callback-Methode ausführen.