Я получаю курс обмена валюты с помощью вызова 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
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение