Я хочу отображать состояние моего приложения в цвете ConstraintLayout. Мое приложение одноразовое и использует MVVM.
private val _status = NonNullMutableLiveData(NacinDelaEnum.OFFLINE)
val status:LiveData<NacinDelaEnum>
get()=_status
В зависимости от значения status
Я хотел бы раскрасить фон ConstraintLayout.
NacinDelaEnum - это просто простой перечислимый класс
enum class NacinDelaEnum {
ONLINEEXT,ONLINEINT,OFFLINE
}
Когда пользователь запускает приложение, я пингуюсь изнутри, затем из внешнего и, в зависимости от этого, меняю значение _status
.
В случае OFFLINE
я бы хотел, чтобы фон был красным, ONLINEINT
зеленым и ONLINEEXT
синим.
Я пытался
val back: LiveData<Int> = Transformations.switchMap(_status){
someFunc(it)
}
private fun someFunc(status: NacinDelaEnum) =
when(status){
NacinDelaEnum.ONLINEINT->MutableLiveData(Color.GREEN)
NacinDelaEnum.OFFLINE->MutableLiveData(Color.RED)
NacinDelaEnum.ONLINEEXT->MutableLiveData(Color.GREEN)
}
и в xml
android:background="@{safeUnbox(viewModel.back)}"
Я также импортировал это правильно, поскольку он работает с другой переменной.
<variable name="viewModel" type="com.example.mjagrosk.viewmodels.SettingsViewModel"/>
Полагаю, мое преобразование неверно Как я мог это сделать?
Спасибо