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



我有一个标签布局。我想调用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}"

视图模型:

fun onTabChanged(tab: TabLayout.Tab) { }

在布局中,我得到了以下错误:侦听器类的kotlin.jvm.functions.Function1

我该如何解决这个问题?

在你的viewModel代替这个:

fun onTabChanged(tab: TabLayout.Tab) { }

你应该有这个:

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

最新更新