Android 使用Kotlin按顺序对操作进行排序
我正在尝试按顺序排列一些同步和异步操作,或者同步它们Android 使用Kotlin按顺序对操作进行排序,android,kotlin,kotlin-coroutines,Android,Kotlin,Kotlin Coroutines,我正在尝试按顺序排列一些同步和异步操作,或者同步它们 填充微调器的初始默认值 进行网络调用并为微调器获取更多值(在模型类中使用协程,如果有帮助,可以返回作业对象) 进行网络调用以获取用户数据(在模型类中使用协程,如果有帮助,可以返回作业对象) 根据用户部门设置微调器的选择 问题:在微调器(#2)有机会完全填充值之前,#3和#4可能首先执行,并产生结果,因此我有时会出现越界错误 寻找一个解决方案,最好没有嵌套/金字塔的厄运。我已经在模型层中有了协同程序,我是否也需要在UI层中有另一组协同程序?(听
val binding = FormBinding.inflate(inflater, container, false).apply {
// 1. Create adapter with a single initial value
val depts = hashMapOf(-1L to "--None Selected--")
ArrayAdapter(activity!!, android.R.layout.simple_spinner_item, ArrayList(depts.values)).also { adapter ->
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
spinner.adapter = adapter
}
//#2. Load more values into adapter (network call, uses coroutine)
model.findAllDepartments({
it?.let {
(spinner.adapter as? ArrayAdapter<String>)?.addAll(it.values)
}
Log.d("TAG", "onCreateView: adapter loaded")
})
//3. Get User Profile data (network call, uses coroutine)
arguments?.getLong("id")?.let {
model.findById(it, {
user = it
Log.d("TAG", "onCreateView: ${spinner.count} ${it?.dept?.first}")
})
}
//4. Set selection of the spinner
user?.dept?.let {
spinner.setSelection(it.first.toInt() + 1)
}
}
val binding=FormBinding.充气(充气机、容器、假)。应用{
//1.使用单个初始值创建适配器
val depts=hashMapOf(-1L到”--未选择--)
ArrayAdapter(activity!!,android.R.layout.simple\u微调器\u项,ArrayList(depts.values))。还有{adapter->
adapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项)
spinner.adapter=适配器
}
//#2.将更多值加载到适配器(网络调用,使用协同路由)
model.findAllDepartments({
是吗?让我来{
(spinner.adapter作为?ArrayAdapter)?.addAll(it.values)
}
Log.d(“标记”,“onCreateView:已加载适配器”)
})
//3.获取用户配置文件数据(网络呼叫,使用协同路由)
参数?.getLong(“id”)?.let{
model.findById(it{
用户=it
Log.d(“标记”,“onCreateView:${spinner.count}${it?.dept?.first}”)
})
}
//4.设置微调器的选择
用户?.dept?.let{
spinner.setSelection(it.first.toInt()+1)
}
}