Zum Beispiel ich EditProjectFragment
haben, die wenige Elemente enthält:Moderator/View/Viewstate relationshipts
TextView
(Projektname)ColorPicker
(Projekt Farbe)Spinner
(Projekttyp)
Lassen Sie uns sehen:
- Projektname wird von TextView selbst wiederhergestellt
- Wer muss Projektfarbe speichern?
- Wer muss Spinner Wert speichern?
Es scheint ViewState
's Verantwortung. Wenn der Benutzer beispielsweise eine Farbe auswählt, ruft View
presenter.onProjectColorPicked(color)
auf. Dann ruft Presenter
view.setProjectColor(color)
. Oder View
sollte ViewState
direkt aktualisieren, ohne Presenter
zu rufen, wenn es nicht benötigt?
Ein anderes Beispiel. Der Benutzer fügt ein Foto in EditNoteFragment hinzu. Benutzer wählt Foto (presenter.pickPhoto()
) ->presenter.addPhoto(photo)
genannt und notify View
, um Foto zu ViewState
& hinzuzufügen, zeigen Sie es. Sollte View
Update Note
Objekt selbst sein? Sollte es von Presenter gemacht werden? Im ersten Fall bedeutet das, dass ViewState
Methoden wie getNote()/setNote(note)
zur Verfügung stellt, die von View verwendet werden. Sollte ich Note-Reference durch Update in View.setNote(note)
Methode duplizieren? Der zweite Fall bedeutet, dass ich wahrscheinlich Note
Objekt in Presenter
speichern und nur View
aktualisieren sollte, ohne Note
darin zu übergeben. Aber es sieht wie ein falscher Weg aus.
Mit anderen Worten: was View
ohne Presenter
‚s Hilfe tun muss (ein Foto Note
Objekt hinzufügen?) Und was die Dinge mit ihm (Mausklicks usw.)?
> nicht genau was für ViewState gemeint war; Also, welche Art von Daten muss ich in 'ViewState' speichern? Tatsächlich kann ich sogar 'List' & aktuell ausgewählten Punkt für 'Spinner' über' onSaveInstanceState (Bundle) 'behalten. –
Alexandr