我有一个文本 View ,需要为其创建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)}"
在演示者viewmodel类中
public boolean onLongClickOnHeading(View v) {
//logic goes here
return false;
}
注意:此方法签名应完全采用这种格式。否则,将在运行时抛出出价错误。
关于Android Databinding onLongClick无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46680862/