为了房间数据库的目的,我想在回收视图中运行一些协同程序。
必要的挂起功能作为类参数处理:
class RecyclerAdapter (private val exist : suspend (lastName : String) -> Boolean)
然后,当需要时,我使用以下结构:
GlobalScope.launch(Dispatchers.IO) {
if (exist(dataSet[position].lastName))
[...]
我不确定使用全局作用域是否是最佳实践。我考虑过使用lifecycleScope
,但在适配器中lifecycleOwner
不可用,将其作为参数处理不是一个好的实践。
你们有什么建议?
3条答案
按热度按时间af7jpaap1#
我认为这与单一责任模式相违背,因为适配器的目的主要是处理数据的布局。
我将把这些信息移到项目列表中,然后从视图模型中调用,使用:
viewModelScope.launch{}
然后更新
LiveData
/StateFlow
,从视图中观察它,并相应地将列表提交给适配器7ivaypg92#
我建议用途:
juud5qan3#
你可以在
onBindViewHolder
中得到LifecycleCoroutineScope
。但正如Róbert Nagy所说,我不认为在RecyclerView中直接处理业务逻辑是一个好主意。