сети список данных и отображает их. Если пришел пустой список, значит не удалось получить данные, тогда показываю ошибку и кнопку для повторной попытки загрузки данных.
Я вижу два варианта реализации:
1. Во вьюмодели хранится только livedata со списком данных, а активити подписывается на него. Получается, в активити будет логика, если список не пустой, показывать данные из списка, если список пустой, значит, не удалось получить данные из сети и нужно показать ошибку и кнопку для повторной попытки загрузить данные.
2. Во вьюмодели хранится не только livedata со списком данных, но и livedata<Boolean> - показывать ли ошибку, а так же livedata<Boolean> - показывать ли кнопку перезагрузки. Затем, когда вьюмодел получает данные из сети, если пришел не пустой список, то обновляет только состояние для livedata списка, если список пустой, то обновляет livedata который отвечает за состояние показа ошибки и livedata отвечающий за состояние показа кнопки перезагрузки.
Мне больше нравится 2 вариант. Сейчас он и реализован. Но не знаю, правильно ли это?
Лучше всего написать sealed class с твоими стейтами данных и прочего. И 1 LiveData для этого класса. А в активити уже можно будет понять какой подтип sealed класса и выполнить соответствующие детали.
Обсуждают сегодня