在Kotlin中绑定具有多个参数的适配器

Fra*_*esc 9 android kotlin android-databinding

要为数据绑定适配器使用多个参数,请使用Java语法

@BindingAdapter(value={"arg1", "arg2"}, requireAll = false)
Run Code Online (Sandbox Code Playgroud)

但是这不能在Kotlin中编译:

Error:(13, 37) Unexpected tokens (use ';' to separate expressions on the same line)
Run Code Online (Sandbox Code Playgroud)

什么是Kotlin中多个参数的正确语法?

Str*_*lok 15

应该:

@BindingAdapter(value=*arrayOf("arg1", "arg2"), requireAll = false)
Run Code Online (Sandbox Code Playgroud)

请参阅Kotlin中Java Annotations的官方注释文档

引用:

对于具有数组类型的其他参数,您需要显式使用arrayOf:

// Java
public @interface AnnWithArrayMethod {
    String[] names();
}


// Kotlin
@AnnWithArrayMethod(names = arrayOf("abc", "foo", "bar")) class C
Run Code Online (Sandbox Code Playgroud)

编辑:归功于@Francesc

  • 谢谢.语法实际上略有不同,@ BindingAdapter(value =*arrayOf("arg1","arg2"),requireAll = false) (3认同)

jey*_*toe 5

或者你可以简单地做到这一点

@BindingAdapter("arg1", "agr2", "agr3", "agr4", requireAll = false)
Run Code Online (Sandbox Code Playgroud)

Android Official Docs中所述


Jos*_*eca 5

从 Kotlin 1.2 开始你可以做

@BindingAdapter(value = ["arg1", "arg2"], requireAll = false)
Run Code Online (Sandbox Code Playgroud)