У меня есть такая модель представления -
private val viewState = SchoolsViewState()
fun onViewOpened() =
Transformations.map(schoolUseCase.performAction(SchoolAction.GetList)) {
when (it) {
is SchoolResult.Loading -> viewState.copy(loading = true)
is SchoolResult.ListContent -> viewState.copy(loading = false, listData = it.schoolList)
is SchoolResult.Error -> viewState.copy(loading = false, error = it.error)
else -> viewState.copy(loading = false)
}
}
Класс viewState выглядит следующим образом -
data class SchoolsViewState(
val loading: Boolean = false,
val schoolList: List<SchoolModel> = emptyList(),
val error: SchoolResult.ErrorType? = null
)
Модель наблюдения фрагмента, код наблюдения, выглядит следующим образом -
viewModel.onViewOpened().observe(this, Observer {
//Handling the SchoolsViewState here
swipeContainer.isRefreshing = it.loading
if (it.schoolList.isNullOrEmpty()) {
view?.recycler_view?.visibility = View.GONE
view?.empty_view?.visibility = View.VISIBLE
} else {
view?.recycler_view?.visibility = View.VISIBLE
view?.empty_view?.visibility = View.GONE
view?.recycler_view?.adapter = schoolAdapter
myAdapter.setSchoolList(it.schoolList)
}
})
Проблема при каждом обновлении свайпа. Сначала я вижу пустое представление, и как только появляются данные, я вижу список школ. Так что это своего рода неудобство пользовательского интерфейса. Это связано с тем, что viewState.copy(...)
при каждом обновлении дает новое состояние пользовательскому интерфейсу. Как я могу преодолеть эту проблему?