2016-05-08 23 views
20

データバインディングライブラリを使用してonClickメソッドにカスタム引数を渡すことは可能ですか?私がonClickListener使用する必要が私のレイアウトxmlファイルがあります。Androidデータバインドの引数を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> 

を、私はここに私のクリックハンドラのコードを持っている:

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

は、それがクリックして、XMLから私のCategoryViewModelオブジェクトを渡すことができますハンドラ?

答えて

41

ラムダ式を使用できます。

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

ビューが必要な場合は、あなたがそのようにもして渡すことができます。

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

作業罰金、ありがとう! – kolodach

+0

よろしくお願い致します! – Luten

+0

ラムダがコンパイルされていないので、これを行う別の方法はありますか? – JPM

関連する問題