У меня возникли проблемы с работой моего BindingAdapter в моем новом приложении.
Я всегда получаю следующую ошибку:
****/ data binding error ****msg:Cannot find the setter for attribute 'visible' with parameter type boolean
Это мой BindingAdapter:
object BindingAdapters {
@set:BindingAdapter("visible")
@JvmStatic
var View.visible
get() = visibility == View.VISIBLE
set(value) {
visibility = if (value) View.VISIBLE else View.GONE
}
}
Это представление, имеющее представление в XML, порождающее проблему:
<TextView
android:id="@+id/tvDescription"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/item_horizontal_margin_large"
android:text="@{viewModel.item.description}"
visible="@{viewModel.showGroup}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/ctvDivision"
app:layout_constraintTop_toTopOf="parent" />
Это новый проект, поэтому я начал с Android X и не нуждался в миграции.
У меня есть эта строка в build.grade:
annotationProcessor 'androidx.databinding:databinding-compiler:3.4.0-alpha09'
, и я использую gradle 3.2.11.
Я не уверен, нужно ли это, но это код, где я раздуваю свою привязку:
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
setHasOptionsMenu(true)
binding = DataBindingUtil.inflate(
layoutInflater,
R.layout.fragment_good,
container,
false
)
val view = binding?.root
binding?.viewModel = viewModel
return view
}
Все остальные стандартные средства привязки данных работают.Как только я пытаюсь настроить BindingAdapter, происходит сбой.
Я читал на SO, что некоторые люди утверждали, что привязка данных не работала должным образом с X. Но это были сообщения от октября, и были люди, утверждающие, что они работали идеально для них в том же посте.
Я забыл что-то глупое или это действительно еще не работает с X?