Я получаю курс обмена валюты с помощью вызова API, используя концепцию модификации и ViewModel. При запуске приложения я могу получить последние данные с сервера, но когда я пытаюсь обновить текущие данные, нажав кнопку, Live Data значение не обновляется, я получаю те же старые данные. Кто-нибудь может помочь мне, как обновить данные в реальном времени при нажатии кнопки.
ViewModel Class*****
класс MainViewModel (частный репозиторий val: CurrencyRepository) : ViewModel() {
init {
viewModelScope.launch() {
repository.getCurrencyExchangeList()
}
}
val quotes: LiveData
get() = repository.currencyLiveData
Класс репозитория*****
class CurrencyRepository(private valcurrencyService: CurrencyInterface) {
val currencyLiveData = MutableLiveData()
suspend fun getCurrencyExchangeList() {
val result = currencyService.getAllCurrencyData()
if (result.body() != null) {
//currencyLiveData.postValue(result.body())
currencyLiveData.value = result.body()
}
}
}
Метод (в MainActivity) для получения и обновления списка валют *****
личное развлечение fetchCurrencyRates() {
val currencyService = RetrofitHelper.getInstance().create(CurrencyInterface::class.java)
val repository = CurrencyRepository(currencyService)
val mainViewModel =
ViewModelProvider(this, MainViewModelFactory(repository))[MainViewModel::class.java]
mainViewModel.quotes.observe(this, Observer {
Log.d("AllCurrencyList", it.updated)
})
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... d-api-call
LiveData не обновляет свое значение при втором вызове API ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1721217096
Anonymous
Я получаю курс обмена валюты с помощью вызова API, используя концепцию модификации и ViewModel. При запуске приложения я могу получить последние данные с сервера, но когда я пытаюсь обновить текущие данные, нажав кнопку, Live Data значение не обновляется, я получаю те же старые данные. Кто-нибудь может помочь мне, как обновить данные в реальном времени при нажатии кнопки.
ViewModel Class*****
класс MainViewModel (частный репозиторий val: CurrencyRepository) : ViewModel() {
init {
viewModelScope.launch() {
repository.getCurrencyExchangeList()
}
}
val quotes: LiveData
get() = repository.currencyLiveData
Класс репозитория*****
class CurrencyRepository(private valcurrencyService: CurrencyInterface) {
val currencyLiveData = MutableLiveData()
suspend fun getCurrencyExchangeList() {
val result = currencyService.getAllCurrencyData()
if (result.body() != null) {
//currencyLiveData.postValue(result.body())
currencyLiveData.value = result.body()
}
}
}
Метод (в MainActivity) для получения и обновления списка валют *****
личное развлечение fetchCurrencyRates() {
val currencyService = RetrofitHelper.getInstance().create(CurrencyInterface::class.java)
val repository = CurrencyRepository(currencyService)
val mainViewModel =
ViewModelProvider(this, MainViewModelFactory(repository))[MainViewModel::class.java]
mainViewModel.quotes.observe(this, Observer {
Log.d("AllCurrencyList", it.updated)
})
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78759369/livedata-is-not-updating-its-value-on-2nd-api-call[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия