gpt4 book ai didi

android - BindingAdapter 中的高阶函数

转载 作者:行者123 更新时间:2023-11-29 15:34:24 24 4
gpt4 key购买 nike

我在 android 中使用 DataBinding 并且我有一个自定义 View :CarouselView

我为此编写了一个绑定(bind)适配器:

@BindingAdapter("onClick")
fun setOnClick(carouselView: CarouselView, onClick: (position: Int) -> Unit) {
carouselView.setImageClickListener { position ->
onClick.run(position)
}
}

在 xml 中:

<com.synnapps.carouselview.CarouselView
android:id="@+id/carouselView"
...
app:onClick="@{(p) -> vm.onAdsClicked(p)}"/>

但它不编译。所以我看到了this在 Stackoverflow 中回答。但我的问题是我不能使用 Runnable 而不是 kotlin hoc 函数,因为我需要传递一个参数来运行。

我该如何解决?

最佳答案

如果可以的话,我遇到了同样的问题(在 BindingAdapter 的 HOF 中传递参数)并想出了一个更优雅的解决方案。您可以确实做到这一点,您只需要先将 HOF 定义为变量。

View 模型:

val onAdsClicked = fun(position: Int) {
// Do stuff
}

XML:

<com.synnapps.carouselview.CarouselView
android:id="@+id/carouselView"
...
app:onClick="@{vm.onAdsClicked}"/>

绑定(bind)适配器:

@BindingAdapter("onClick")
fun setOnClick(carouselView: CarouselView, onClick: (position: Int) -> Unit) {
carouselView.setImageClickListener { position ->
onClick(position)
}
}

关于android - BindingAdapter 中的高阶函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54671534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com