我有一个 TextView ,我需要为其创建一个 onLongClick 监听器。 现在对于相应的 View 模型,它有一个函数 sendLogs() 处理 onClick 的逻辑。如果我将 onClick 更改为 onLongClick 函数,则永远不会调用。有什么办法让它适用于 onLongClick 吗?
onClick 直接链接到我的模型类函数而不是 onLongClick。所以我认为模型类绑定(bind)是正确的,但我可能需要在这里做一些额外的工作。
<data>
<import type="android.view.View" />
<variable
type="com.aaa.bbb.viewmodel.SystemSettingsViewModel"
name="systemSettings"
</variable>
</data>
<TextView
android:gravity="end"
android:id="@+id/tv_logging"
android:layout_centerVertical="true"
android:layout_height="wrap_content"
android:layout_marginRight="8dp"
android:layout_width="wrap_content"
android:onClick="@{() -> systemSettings.sendLogs()}"
android:text="@string/enable_logs"
android:textAlignment="viewEnd" />
最佳答案
我设法正确地工作了。我怀疑这是否已正确记录。
在 xml 中
android:onLongClick="@{(view) -> presenter.onLongClickOnHeading(view)}"
在演示者 View 模型类中
public boolean onLongClickOnHeading(View v) {
//logic goes here
return false;
}
注意:此方法签名应完全采用此格式。否则将在运行时抛出出价错误。
关于Android 数据绑定(bind) onLongClick 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46680862/