【问题标题】:Pass Callback Function to Custom View in Android将回调函数传递给Android中的自定义视图
【发布时间】:2020-08-03 14:55:24
【问题描述】:

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

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


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

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

我希望它看起来像这样:


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

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

感谢您的任何想法。

【问题讨论】:

    标签: android android-custom-view android-xml android-custom-attributes


    【解决方案1】:

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

    如果我将 public 设置器添加到我的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      相关资源
      最近更新 更多