android - 如何将 API 中的数据分配给 Android 中的全局变量?
问题描述
var datasFromApi: ArrayList = arrayListOf()
btnNextCharacter.setOnClickListener(View.OnClickListener {
if(checkForInternetConnection()) {
try {
val innerClassObject = DownloadingCharacterTask()
innerClassObject.execute()
}catch (e: Exception){
e.printStackTrace()
}
}
}
内部类 DownloadingCharacterTask : AsyncTask>() {
override fun doInBackground(vararg params: String?): List<Characters>? {
var parseCharacter = ParseCharacterUtility()
return parseCharacter.parseCharacterObjectFromJSONData()
}
override fun onPostExecute(result: List<Characters>?) {
super.onPostExecute(result)
var numberOfCharacters = result?.size ?: 0
var index: Int = 0
while (index < result!!.size) {
datasFromApi[index].name = result[index].name
datasFromApi[index].height = result[index].height
datasFromApi[index].mass = result[index].mass
datasFromApi[index].gender = result[index].gender
datasFromApi[index].birthYear = result[index].birthYear
}
}
}
解决方案
AsyncTasks
即使用3个类型参数
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
}
从文档:
- Params,执行时发送给任务的参数类型。
- Progress,在后台计算期间发布的进度单元的类型。
- Result,后台计算结果的类型。
您可以使用Result类型返回一些值并将其存储在某个全局变量中。
话虽如此,您应该重新考虑使用AsyncTask
(过去是一件可怕的事情),Android 即将抛弃这个怪物。希望有帮助。
推荐阅读
- salesforce - 如何在 Robot Framework 中配置 cumulusci?
- python - 在 Python 中创建参数化类型,但将所有实例设为“超级类型”的子级
- r - 无法创建 bookdown 自定义模板的格式功能
- python - python街机库,如何与其他程序交互
- c - 摆脱 C 中的所有注释
- java - Spring - 将 application.properties 注入 jar(作为 Maven 依赖项)
- java - 如何从 ArrayList 的开头删除 0
- c - 在 Visual Studio Code 中编译 C
- sql - BigQuery:存储半结构化 JSON 数据
- python - 未找到“联系人”的反向。'contact' 不是有效的视图函数或模式名称