Инициализировать свойство класса на основе общего предпочтения в классе с привязкой к данным - PullRequest
0 голосов
/ 31 мая 2019

У меня есть фрагмент с переключателем.Я хочу установить «проверенное» значение на основе того, установлена ​​ли для определенной переменной значение перечисления ACTIVE или INACTIVE.Когда приложение запускается в первый раз, значение НЕАКТИВНО.Когда пользователь приложения устанавливает определенное предпочтение, оно должно быть АКТИВНО при следующем запуске.

Вот то, что у меня сейчас есть

 enum class Status {
    ACTIVE, INACTIVE
}

var status = Status.INACTIVE
    private set(value) {
        if (field == value) return
        field = value
        binder.statusChanged()
    }

inner class Binder : android.os.Binder() {
    val active get() = status == Status.ACTIVE
    val statusChanged = StickyEvent0() .....
}

inner class Data : BaseObservable() {
    //checked
    val serviceActive: Boolean
        @Bindable get() = binder.active.....
}

private val data = Data()
private val binder = Binder()
init{
    binder.statusChanged[this] = data::onStatusChanged
}

И в моем фрагменте у меня есть

        <Switch
            android:checked="@{data.serviceActive}"
            android:clickable="false"/>

По сути, я бы хотел изменить это, вместо

var status = Status.INACTIVE

У меня было бы что-то вроде

 var status = functionToCalculateStatus()

Так что, если логика вернет ACTIVE, значение для переключателя будет истинным / проверено

Есть идеи?

...