Привет, я пытаюсь динамически установить и изменить фоновый рисунок, основанный на логическом значении, определенном в моем классе BaseObservable ниже, но я получаю сообщение об ошибке, утверждая, что он не может выполнить двустороннее связывание данных с помощью метода isFollowing.
ошибка в следующем:
Выражение 'viewModel.isFollowing ()' не может быть инвертировано, поэтому его нельзя использовать в двусторонней привязке. Подробности: двусторонняя привязка не может разрешить установщик для логического свойства. 'isFollowing'
private var isFollowing: Boolean = false
@Bindable
fun isFollowing(): Boolean {
return isFollowing
}
@BindingAdapter("android:background")
fun setIsFollowing(frameLayout: FrameLayout, isFollowing: Boolean) {
if (this.isFollowing != isFollowing) {
this.isFollowing = isFollowing
if(this.isFollowing){
frameLayout.background = frameLayout.context.getDrawable(R.drawable.following)
}else{
frameLayout.background = frameLayout.context.getDrawable(R.drawable.follow)
}
}
}
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@={viewModel.isFollowing}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
Я попробовал это как предложено, но без радости:
companion object {
private var isFollow: Boolean = false
@JvmStatic
val isFollowing: Boolean
@Bindable get() = isFollow
}