数据绑定错误**** msg:在android.widget.CheckedTextView上找不到值类型为java.lang.Boolean的属性“ android:checked”的吸气剂。
我有一个Kotlin Android应用程序,其中一个XML布局包含一个CheckedTextView
,我想将选中的属性与ViewModel的选中值双向绑定。这个想法是viewModel中的checked属性将代表视图本身上的属性。这将失败,并显示以上错误消息。现在,我想知道这是否是因为checked是一个布尔值并且该getter称为isChecked
。数据绑定无法识别吗?因此,我尝试使用getChecked
函数对其进行扩展,但是并不能解决该错误。可能是因为虽然Kotlin支持扩展功能,但Java不支持。有什么想法可以解决吗?
XML文件:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="viewModel"
type="lehrbaum.de.onenightcomps.view.SimpleCheckableListItemViewModel"/>
</data>
<CheckedTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:padding="@dimen/text_margin"
android:gravity="center_vertical"
android:textStyle="bold"
android:checkMark="?android:attr/listChoiceIndicatorSingle"
android:checkMarkTint="@color/colorPrimary"
android:checked="@={viewModel.checked}"
android:text="@{viewModel.text}"/>
</layout>
ViewModel类:
class SimpleCheckableListItemViewModel {
val checked : MutableLiveData<Boolean> = MutableLiveData()
val text : MutableLiveData<String> = MutableLiveData()
}
扩展功能:
fun CheckedTextView.getChecked(): Boolean {
return this.isChecked
}
答案 0 :(得分:0)
此错误可能有不同的原因,但就我而言,问题是由于我没有在Gradle中添加应用插件:'kotlin-kapt'和应用插件:'kotlin-android-extensions'而引起的。 / p>
添加了这些插件后,您必须用kapt替换您的注释处理器。
在那之后,一切都会顺利进行。