ANdroid привязка данных Двусторонняя привязка не может разрешить установщик для логического свойства - PullRequest
0 голосов
/ 21 февраля 2020

Привет, я пытаюсь динамически установить и изменить фоновый рисунок, основанный на логическом значении, определенном в моем классе 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
    }

1 Ответ

0 голосов
/ 21 февраля 2020

Вы можете изменить метод для получения:

val isFollowing: Boolean
    @Bindable get() = _isFollowing
...