2015-11-04 7 views
12

Gibt es eine Möglichkeit, mehrzeiligen Code mit DataBinding-Bibliothek zu schreiben?Datenbindung - Wie schreibt man mehrzeilige Deklarationen?

Ich habe versucht, folgende, aber es beschwert sich über XML-Format

android:text="@{ 
      viewModel.subscriptionExpiration == null 
       ? viewModel.field1 
       : viewModel.field2 
     }" 

Mit folgenden Fehler: Error:(80) Error parsing XML: not well-formed (invalid token)

Einzeiliger Alternative funktioniert, aber ich finde es weniger lesbar:

android:text="@{viewModel.subscriptionExpiration == null ? viewModel.field1 : viewModel.field2}" 
+2

Glück gehabt: stattdessen in Form Als Alternative würde ich empfehlen, die Bewertung des Ansichtsmodell ausgelagert? Uns interessiert das auch. – nAndroid

+0

@nAndroid Ich habe immer noch keine Lösung für DataBinding gefunden, aber Sie können meine letzte Antwort zu dieser Frage unten überprüfen. –

Antwort

1

Ich habe versucht zu graben und konnte keine Antwort finden. Ich weiß nicht, dass Sie String-Literale auf diese Weise in XML zerlegen können.

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

dann in Ihrem Viewmodel Klasse

@Bindable 
public String getSubscriptionStatus(){ 
    return getSubscriptionExpiration() == null 
      ? getField1() 
      : getField2(); 
}