我正在使用 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)
})
}
我正在开发一个应用程序,需要将 json 文档的 zip 存档提取到文件夹中。我遇到的问题是有时存档包含嵌套的 zip 文件。我目前的 c...
我正在开发一个应用程序,需要将 JSON 文档的 zip 存档提取到文件夹中。我遇到的问题是有时存档包含嵌套的 zip 文件。我当前的代码如下所示:
fun File.unzipServiceFile(toPath: String): List<File>
{
val retFiles = mutableListOf<File>()
ZipFile(this).use { zipFile ->
zipFile.entries().asSequence().forEach { zipEntry ->
zipFile.getInputStream(zipEntry).use { input ->
//if there are nested zip files, we need to extract them
if (zipEntry.name.endsWith(".zip")) {
//we need to go deeper
}
else if (zipEntry.name.endsWith(".json") && !zipEntry.isDirectory && !zipEntry.name.startsWith(".") && !zipEntry.name.startsWith(
"_"
)
) {
val file = File("$toPath/${zipEntry.name}")
FileUtils.writeByteArrayToFile(file, input.readBytes())
retFiles.add(file)
}
}
}
}
return retFiles
}
我实际上并不想将嵌套的 zip 文件写入文件夹,因为这样我就必须将它们从目录中清除。我只想提取内容,或者如果还有其他嵌套层,则继续递归。你知道我该怎么做吗?