2016-05-08 8 views
20

Es ist möglich, benutzerdefinierte Argumente an onClick Methode mit Data Binding Library übergeben? Ich habe meine Layout XML-Datei, wo ich OnClickListener verwenden müssen:Android Data Binding übergeben Argumente an onClick-Methode

<?xml version="1.0" encoding="utf-8"?> 
<layout ...> 

    <data> 
     <variable 
      name="viewModel" 
      type="com.productivity.tiktak.ui.tracker.viewModel.CategoryViewModel"/> 
     <variable 
      name="callback" 
      type="com.productivity.tiktak.ui.tracker.TrackerAdapter"/> 
    </data> 

    <android.support.v7.widget.CardView 
     android:onClick="@{callback.onCategoryClick(viewModel)}" 
     ... 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <!-- ... Some stuff --> 

    </android.support.v7.widget.CardView> 
</layout> 

und ich hier meine Click-Handler-Code haben:

public void onCategoryClick(View view, CategoryViewModel categoryViewModel) 
{ 
    //handler code... 
} 

Ist es möglich, meine CategoryViewModel Objekt aus XML passieren zu klicken Handler?

Antwort

41

Sie können einen Lambda-Ausdruck verwenden.

android:onClick="@{() -> callback.onCategoryClick(viewModel)}" 

Wenn Sie die Ansicht benötigen, können Sie das auch mit übergeben:

android:onClick="@{(v) -> callback.onCategoryClick(v, viewModel)}" 
+0

Arbeit gut, danke! – kolodach

+0

Großartig, danke !! – Luten

+0

gibt es eine andere Möglichkeit, dies zu tun, da das Lambda nicht kompiliert? – JPM

Verwandte Themen