【发布时间】:2019-07-31 10:05:45
【问题描述】:
我正在尝试添加应用全局自定义@BindingAdapter。我创建了TextViewBinding.kt 文件,并将其放入单独的包com.my.app.binding.TextViewBinding。当我编译应用程序时,我得到了错误
错误:找不到符号 TextViewAdapterKt.setTypeface(this.titleTextView, 查看JavaLangStringNormalJavaLangStringBold);
如果我把适配器函数放到一个Activity中,就没有错误。但是,因为它是应用程序全局适配器,我不希望它属于任何特定视图。那么,我应该在哪里放置适配器功能以消除错误?
TextViewAdapter.kt
@BindingAdapter("typeface")
fun TextView.setTypeface(style: String) {
when (style) {
"bold" -> setTypeface(null, Typeface.BOLD)
else -> setTypeface(null, Typeface.NORMAL)
}
}
my_list_item.xml
...
<TextView app:typeface='@{viewed ? "normal" : bold"}' ... />
...
【问题讨论】:
-
尝试使用
@JvmStatic上面的@BindingAdapter注释并再次检查。 -
我无法将
@JvmStatic添加到函数中,但我已经尝试使用@JvmStatic方法创建对象,并使用伴随对象创建类,但错误仍然存在。 -
可能是因为是扩展功能,对
@BindingAdapter不起作用。 -
不,我尝试了基本功能,但没有任何变化。在 Activity 文件中它可以工作。
-
我只是忘了在适配器文件中添加包声明 :) 但还是谢谢你。
标签: android kotlin android-databinding