2016-05-08 26 views
20

Có thể chuyển đối số tùy chỉnh sang phương thức onClick bằng Thư viện ràng buộc dữ liệu? Tôi có tập tin xml bố trí của tôi mà tôi cần phải sử dụng OnClickListener:Tham số truyền dữ liệu Android cho phương thức 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> 

và tôi một có mã handler nhấp chuột của tôi ở đây:

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

Có thể vượt qua đối tượng CategoryViewModel tôi từ xml click xử lý?

Trả lời

41

Bạn có thể sử dụng biểu thức lambda.

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

Nếu bạn cần xem, bạn có thể vượt qua đó là tốt với:

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

tốt công việc, cảm ơn! – kolodach

+0

Tuyệt vời, cảm ơn !! – Luten

+0

có cách nào khác để làm điều này vì lambda không biên dịch? – JPM

Các vấn đề liên quan