2017-10-28 1 views
0

ich Text in meinem EditText in der folgenden Art und Weise unter Verwendung von String-Ressourcen initialisieren kann:Einfache Möglichkeit, String-Ressourcen zu kombinieren mit Databinding

android:text="@string/my_text" 

Und das ist, wie ich tun würde, dass die Verwendung von Zwei-Wege-Datenbindung: EditText initialisiert hat mit „@ Zeichenfolge/my_text“ und in der gleichen Zeit b

android:text="@={viewModel.myText}" 

die Frage ist, wie oben zu kombinieren Ansätze, um (wenn es möglich ist) Nutzen Sie die Zwei-Wege-Datenbindung? Grundsätzlich suche ich nach etwas wie unten (aber es funktioniert nur in der Vorschau, nicht in der App):

android:text="@={viewModel.myText, [email protected]/my_text}" 

Ich weiß, dass ich zweiten Ansatz und in Ansichtsmodell initialisieren myText verwenden kann, welche vermehrt werden zu betrachten, sondern Ich frage mich, ob es möglich ist, das nur in XML zu erreichen?

Meiner Meinung nach wäre der Vorteil, dass ViewModel nicht über String-Ressourcen wissen müsste.

Antwort

0

Die Art, wie wir hinter unserem Projekt in Ansichtsmodell Code behandeln:

  • setzen einen Standardtext 'myText' in Ansichtsmodell und
  • , wenn wir den Wert erfordern Aktualisierung, rufen:

    public void setPassword (String-Passwort) { this.password = Passwort; notifyPropertyChanged (BR.passwordQuality); }

Hoffe das hilft.

Danke.

+0

Die erste Sache ist, dass Sie wahrscheinlich Einweg-Datenbindung mit "@ {viewModel.myText}" verwenden. Ich verwende eine Zwei-Wege-Datenbindung mit "@ = {viewModel.myText}", so dass ich notifyPropertyChanged nicht manuell aufrufen muss. Die zweite Sache ist, dass ich weiß, dass ich Standardtext auf 'myText' in ViewModel setzen kann, aber mein Standardtext ist in @string Ressourcen und um es zu bekommen, müsste ich auf Kontext von ViewModel zugreifen, was ich gerne vermeiden würde. – LLL

Verwandte Themen