Как правильно обрабатывать состояние представления при разработке под AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как правильно обрабатывать состояние представления при разработке под Android

Сообщение Anonymous »

В настоящее время в моем приложении используется такой подход:
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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»