У меня есть View
(не ViewModel
!) С более сложной логикой / состоянием, для которого я хочу включить двустороннюю привязку данных. Поэтому вместо использования stati c BindingAdapters я хотел использовать геттеры / сеттеры.
Поэтому я сделал следующее:
var myValue: String = ""
@Bindable get(): String {
return field
}
set(value: String) {
field=value // this creates backing field
setText(value)
notifyPropertyChanged(BR.myValue)
}
При компиляции (с помощью ./gradlew assembleDebug --stacktrace
для получения детали) Я получаю эту ошибку:
Caused by: android.databinding.tool.util.LoggedErrorException: Found data binding error(s):
ERROR: Cannot find a getter for <com.example.test.MyAutoCompleteTextView app:myValue>
that accepts parameter type 'java.lang.String'
If a binding adapter provides the getter, check that the adapter is annotated correctly
and that the parameter type matches.
file:///Users/myuser/AndroidStudioProjects/MyProject/app/src/main/res/layout/fragment_my.xml Line:123
Часть, которую я не совсем понимаю, это
ERROR: Cannot find a getter for <com.example.test.MyAutoCompleteTextView app:myValue>
that accepts parameter type 'java.lang.String'
Почему он ищет геттер с параметром типа String? Получатель должен возвращать строку, но не иметь параметр String ?