我有一个文本 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/

10-10 18:32