2016-05-08 9 views
20

È possibile passare argomenti personalizzati al metodo onClick utilizzando Data Binding Library? Ho il mio file XML di layout in cui ho bisogno di usare onClickListener:Il binding dei dati Android passa gli argomenti al metodo onClick

<?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> 

e ho un il mio codice del gestore clicca qui:

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

E 'possibile passare il mio oggetto CategoryViewModel da XML a fare clic gestore?

risposta

41

È possibile utilizzare espressioni lambda.

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

Se avete bisogno della vista, è possibile passare anche quello con:

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

funzionano bene, grazie! – kolodach

+0

Ottimo, grazie !! – Luten

+0

c'è un altro modo per fare ciò mentre lambda non sta compilando? – JPM

Problemi correlati