【问题标题】:Android databinding error: cannot find symbol of my custom @BindingAdapterAndroid数据绑定错误:找不到我的自定义@BindingAdapter的符号
【发布时间】: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


【解决方案1】:

终于找到了错误原因。我只是忘记在TextViewAdapter.kt 文件的顶部添加包声明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 2020-05-09
    • 2020-03-13
    • 1970-01-01
    相关资源
    最近更新 更多