首页 > 解决方案 > 如何通过数据绑定将 onClick 代码从 XML 传输到 Kotlin 以进行 recyclerview

问题描述

下面的代码是 recyclerview 项目的 XML。

如何将android:onClick="@{() -> sumListener.onClick(sum)}"(最后一行)从 XML 传输到 kotlin?

我想做一个onLongClick,但是XML 没有onLongClick。

如果需要更多信息,请告诉我。

    <data>

        <variable
            name="sum"
            type="com.cementcaibird.astock.database.Sum" />

        <variable
            name="sumListener"
            type="com.cementcaibird.astock.main.SumListener" />
    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/ll_item_container"
        android:onClick="@{() -> sumListener.onClick(sum)}">

        ...(other view code)

标签: androidkotlinandroid-recyclerviewdata-binding

解决方案


可以用这个方法实现

 <data>

        <variable
            name="sum"
            type="com.cementcaibird.astock.database.Sum" />

        <variable
            name="sumListener"
            type="com.cementcaibird.astock.main.SumListener" />
    </data>

    <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/ll_item_container">

        ...(other view code)

在您的活动/片段中

private lateinit var binding: YourBindingclass
..

binding.linearLayout.setOnClickListener { view-> 
    // Handle your click here
}

binding.linearLayout.setOnLongClickListener{ view-> 
    // Handle your long click here
    true
}

推荐阅读