如何在Android自定义数据绑定中传递带参数的函数

如何在Android自定义数据绑定中传递带参数的函数,android,kotlin,data-binding,android-databinding,Android,Kotlin,Data Binding,Android Databinding,我有一个选项卡布局。我想在用户单击选项卡时调用视图模型中的“onTabChanged”函数。到目前为止,我已经尝试过: @BindingAdapter("onTabChanged") fun setOnTabChanged(tabLayout: TabLayout, onTabChanged: (TabLayout.Tab) -> Unit) { tabLayout.addOnTabSelectedListener(object: TabLayout.OnTab

我有一个选项卡布局。我想在用户单击选项卡时调用视图模型中的“onTabChanged”函数。到目前为止,我已经尝试过:

@BindingAdapter("onTabChanged")
fun setOnTabChanged(tabLayout: TabLayout, onTabChanged: (TabLayout.Tab) -> Unit) {
    tabLayout.addOnTabSelectedListener(object: TabLayout.OnTabSelectedListener {
        override fun onTabSelected(tab: TabLayout.Tab?) {
            tab?.let {
                onTabChanged(it)
            }
        }
        override fun onTabUnselected(tab: TabLayout.Tab?) {}
        override fun onTabReselected(tab: TabLayout.Tab?) {}
    })
}
在layout.xml中:

<data>
    <variable
        name="viewModel"
        type="com.janfranco.ui.menu.MenuViewModel" />
</data>

...

app:onTabChanged="@{viewModel::onTabChanged}"

在布局中,我得到了以下错误:监听器类“kotlin.jvm.functions.Function1在您的
viewModel
中,而不是这个:

fun onTabChanged(tab: TabLayout.Tab) { }
你应该有这个:

 val onTabChanged = { tab: TabLayout.Tab -> }
 val onTabChanged = { tab: TabLayout.Tab -> }