2016-09-22 4 views
1

Ich verwende Android Data Binding-Bibliothek in der App, die das Muster MVP folgt. Im talk von George Berg und Yigit Boyar wird folgendes Beispiel des Ausdrucks mit dem Ereignishandler verwendet:Android DataBinding-Ausdruck mit Listener-Bindungen

<Button android:onClick="@{isAdult ? handlers.adultClick : handlers.childClick}" …/> 

Gibt es eine Möglichkeit die gleiche Funktionalität (dh unterschiedliches „onClick“ Ereignis abhängig von einer Bedingung) zu haben, nicht mit method references aber mit listener bindings stattdessen? Oder ist mein Ansatz völlig falsch und die Logik sollte zum Moderator verschoben werden?

+2

Sie können die Bedingung Sie 'onClick' Methode übergeben und dann arbeiten je nach ihm, wie'() -> handler.conditionClick (Bedingung) ', und in Ihrem Handler' Leere conditionClick (bool isTrue) { } ' – yennsarah

Antwort

3

von listener_bindings

Wenn Sie einen Ausdruck mit einem Prädikat (z ternären) verwenden, können Sie Leere als Symbol verwenden.

android:onClick="@{(v) -> v.isVisible() ? doSomething() : void}" 
+0

Sorry, aber das hat nichts mit meiner Frage zu tun. –

+0

was meinst du?

+0

Ok, die Antwort ist nach der Bearbeitung klar, danke! In meinem Fall sieht es so aus: Android: onClick = "@ {() -> mesenter.someValue! = Null? Null: presenter.someMethodCall()}", ich akzeptiere dies als korrekt. –