gpt4 book ai didi

android - 用于数据绑定(bind)的自定义 onClickListener

转载 作者:行者123 更新时间:2023-12-05 00:06:23 25 4
gpt4 key购买 nike

我想创建一个自定义 onClickListener 以用于数据绑定(bind)。这个自定义点击监听器可防止用户向按钮发送垃圾邮件并触发事件两次(比如同时显示两个对话)。我在下面创建了一个自定义监听器,它可以在正常代码中工作,但我不知道如何实现它以实现数据绑定(bind),例如 xml. 中的 android:onClick=""/p>

abstract class OneClickListener(var delay: Long) : View.OnClickListener {
private var hasClicked: Boolean = true

constructor() : this(1000)

override fun onClick(it: View) {
if (!hasClicked) {
return
} else {
hasClicked = false
onClicked(it)
GlobalScope.launch {
delay(delay)
hasClicked = true
}
}
}

abstract fun onClicked(it: View)

是否可以在数据绑定(bind)中使用此监听器,例如app:OneClickListener="@{viewModel::MyMethod}" 在 XML 中?如果是,你能告诉我怎么做吗?

最佳答案

使用数据绑定(bind),您可以通过在 lambda 中调用它来指定触发事件时要调用的监听器。例如,假设您的 View 模型中有一个名为 myOnClick() 的方法。您可以通过这种方式将其与数据绑定(bind)一起使用:

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

定义一个名为 OneClickListener 的自定义绑定(bind)适配器是不同的,当点击事件被触发时它不会被调用,除非你使用一个技巧:在自定义绑定(bind)适配器中注册一个点击监听器。这意味着您将不得不调用一个注册其他方法的方法:这并不是添加监听器的最干净的方法。

关于android - 用于数据绑定(bind)的自定义 onClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53886121/

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