ViewState(по одному viewState на каждый экран)
Код: Выделить всё
sealed class CategoriesViewState {
object Loading : CategoriesViewState()
data class Error(
val errorMessage: String,
val messageType: UIComponentType
) : CategoriesViewState()
data class CategoryList(
val categories: List
) : CategoriesViewState()
}
Код: Выделить всё
viewModel.viewState.observe(viewLifecycleOwner, Observer {
when (it) {
is CategoriesViewState.Loading -> {
progress_bar.visibility = View.VISIBLE
Log.d(TAG, "LOADING")
}
is CategoriesViewState.Error -> {
progress_bar.visibility = View.GONE
Log.d(TAG, "ERROR")
}
is CategoriesViewState.CategoryList -> {
progress_bar.visibility = View.GONE
Log.d(TAG, "DATA")
}
}
})
НО мне кажется, что это неэффективно по мере роста приложения.
Предположим, у меня в приложении 20 экранов: мне нужно 20 состояний просмотра, мне нужно написать один и тот же оператор if на каждом экране, мне нужно написать этот уродливый Visible/Gone на каждом экране (не говоря уже о том, что мне нужно устанавливать состояние загрузки при каждом вызове)
Может быть, я совершенно неправ, и это обычный подход, но мне кажется, что МНОГО дублирования кода.
У меня нет конкретного вопроса. Я просто хочу знать, является ли это распространенным подходом в разработке Android, а если нет, что я делаю неправильно в своем код?
Подробнее здесь: https://stackoverflow.com/questions/637 ... -right-way