我正在使用 retrofit 和 ViewModel 概念通过 api 调用获取货币汇率。启动应用程序时,我能够从服务器获取最新数据,但是当我尝试更新实时
我正在使用 retrofit 和 ViewModel 概念通过 api 调用获取货币汇率。在启动应用程序时,我能够从服务器获取最新数据,但是当我尝试通过单击按钮来更新实时数据时,实时数据值不会更新,我得到的是相同的旧数据。所以有人可以帮我如何在按钮单击事件上更新实时数据吗?
类 MainViewModel(私有 val 存储库:CurrencyRepository):ViewModel(){
init {
viewModelScope.launch() {
repository.getCurrencyExchangeList()
}
}
val quotes: LiveData<CurrencyData>
get() = repository.currencyLiveData
}
类 CurrencyRepository(private val currencyService:CurrencyInterface){
val currencyLiveData = MutableLiveData<CurrencyData>()
suspend fun getCurrencyExchangeList() {
val result = currencyService.getAllCurrencyData()
if (result.body() != null) {
//currencyLiveData.postValue(result.body())
currencyLiveData.value = result.body()
}
}
}
私人乐趣 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)
})
}
我希望我正确理解了你的问题。如果是这样,我的建议是将这 ode
一行放在一个有参数的函数中 aux
。比如
test_aux <- function(aux) {
data.frame(ode(times=time, y=stock, parms=aux, func=model, method='euler'))
}
然后,对网格中的每一行调用此函数,或者使用 apply()
列出列 dplyr
(如果您愿意的话) rowwise()
:
model_out <- apply(d, 1, test_aux)
# Or
library(dplyr)
d %>%
rowwise() %>%
mutate(model_out = list(test_aux(c_across(aH, aRel, aRes, aS))))
为了选择“最佳组合”,您应该创建一个输出所需指标的函数,并进行迭代 model_out
,再次使用 lapply()
或 sapply()
,或者使用 mutate()
创建一个具有该指标值的新列。