有一个非常简单的bindingadapter函数。
@JvmStatic
@BindingAdapter("app:test")
fun testBind(v: View, test: Int) {
//test...
}
如果在xml中应用此代码,通常看起来像这样:
自动完成功能可以正常工作,并且xml不会显示任何警告。
但是,此bindingadapter函数在编译时会输出警告。
warning: Application namespace for attribute app:test will be ignored.
许多其他帖子说,删除此警告的名称空间。
我将命名空间以及它从bindingadapter函数中删除了。
@JvmStatic
@BindingAdapter("test")
fun testBind(v: View, test: Int) {
//test...
}
这样做不会在编译时打印出警告。
但是这次,xml显示警告。
此外,当命名空间存在时,正常工作的自动完成功能根本无法工作。
在我尝试过的所有方法中,解决所有两个警告的唯一方法是将名称空间指定为android。
还有其他方法吗? android名称空间似乎是一种误解,因为这是Android中的基本绑定功能,而不是自定义绑定功能。
答案 0 :(得分:0)
如果在绑定适配器方法中使用单个参数,请在@BindingAdapter(...)字符串中删除名称空间,然后在调用xml中的字符串之前添加bind:名称空间。
@JvmStatic
@BindingAdapter("icon")
fun setImage(view: ImageView, imageID: Int) {
}
和bind:icon="@{vm.iconID}"
如果我使用多个属性,则无法使用。