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

时间:2017-03-06 22:53:00

标签: android kotlin android-databinding

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

@BindingAdapter(value={"arg1", "arg2"}, requireAll = false)

然而,这不能在Kotlin中编译:

Error:(13, 37) Unexpected tokens (use ';' to separate expressions on the same line)

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

4 个答案:

答案 0 :(得分:11)

应该是:

@BindingAdapter(value=*arrayOf("arg1", "arg2"), requireAll = false)

请参阅官方注释docs for Java Annotations in Kotlin

引用:

  

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

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


// Kotlin
@AnnWithArrayMethod(names = arrayOf("abc", "foo", "bar")) class C

编辑:归功于@Francesc

答案 1 :(得分:2)

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

@BindingAdapter("arg1", "agr2", "agr3", "agr4", requireAll = false)

Android Official Docs

中指出的那样

答案 2 :(得分:2)

从Kotlin 1.2你可以做到

@BindingAdapter(value = ["arg1", "arg2"], requireAll = false)

答案 3 :(得分:1)

你也可以这样做:

@BindingAdapter(value= ["deckBackgroundAsFirstParameter", "typeAsSecondParameter"], requireAll = false) 
fun loadBackgroundMethodNameForExample(imageViewForExample: ImageView, deckBackgroundAsFirstParameter: Int?, typeAsSecondParameter: Int?) {
   ...
}

其中是您要使用的参数数组。