如何在数据绑定中将参数传递给lambda调用

时间:2019-02-11 16:26:12

标签: android data-binding kotlin

我只想通过数据绑定将一些参数从我的视图传递到模型视图。

我有一个自定义视图,将所有数据渲染到一个recyclerview中。

我有一个模型视图,可以获取服务器数据,并且想要在recyclerview中单击该项目。

布局

<CustomView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:activationRequestClick="@{(item) -> viewmodel.activateCardLinkedCoupon(item)}"/>

ViewModel

class CardLinkedCouponViewModel : ViewModel() {

    fun activateCardLinkedCoupon(item: SomeItem) {
        Timber.e("Clicked")
    }
}

我的CustomView

class CustomView @JvmOverloads constructor(
        context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr) {

    var activationRequestClick: (item: SomeItem) -> Unit = {}

}

这里的问题是我得到了以下错误

An exception occurred: android.databinding.tool.util.LoggedErrorException: Found data binding errors.****/ data binding error ****msg:cannot find method activateCardLinkedCoupon(java.lang.Object) in class CustomView

如果方法activateCardLinkedCoupon没有参数,则它可以正常工作,但我无法从单击的项目中获取信息。

感谢您的帮助

0 个答案:

没有答案