1

我的 android 项目中有一个自定义视图,MyCustomView.

使用像按钮这样的内置视图,我可以使用数据绑定库将回调函数传递给按钮:


<Button
    ...
    android:onClick="@{() -> viewModel.donePressed()}" />

如何传递可以MyCustomView通过 XML 在类中访问的回调函数?

我希望它看起来像这样:


<MyCustomView app:onFinish="@{() -> viewModel.finish()}" />

然后在MyCustomView类(扩展LinearLayout)中,我需要调用onFinish变量。

谢谢你的任何想法。

4

1 回答 1

4

我找到了答案:这实际上是由 Android 自动完成的。

如果我像这样向我的班级添加一个公共设置器:MyCustomView

public fun setOnFinish(callback: () -> Unit) {
    ...
}

然后Android会自动生成app:onFinish属性(不包括set名称部分):

<MyCustomView app:onFinish="@{() -> viewModel.finish()}" />

然后,在自定义视图的构造函数之后调用我定义的函数。

如果您需要进一步自定义,您还可以使用绑定适配器:https ://developer.android.com/topic/libraries/data-binding/binding-adapters

于 2020-08-04T07:27:46.993 回答