ошибка привязки данных **** msg: Не удается найти метод получения атрибута 'android: флажок' с типом значения java.lang.Boolean для android.widget.CheckedTextView.
У меня есть приложение Kotlin для Android, и один из макетов XML содержит CheckedTextView
, и я хочу двухсторонне связать свойство selected со значением checkMed ViewModel.Идея состоит в том, что свойство selected в viewModel будет представлять свойство в самом представлении.Это не с сообщением об ошибке выше.Теперь мне интересно, так ли это, потому что флажок проверен как логическое значение, а метод получения называется isChecked
.Может ли Databinding не распознать это?Поэтому я попытался расширить его с помощью функции 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
}