繁体   English   中英

ViewHolder 内的协程? [科特林]

[英]Coroutine inside ViewHolder? [Kotlin]

我想知道是否可以在ViewHolder启动一个Coroutine ViewHolder ,我的意思是,想象一下你在OnBindViewHolder按下一个项目,你需要调用一个API来获得响应......我不知道我是否可以在其中使用Coroutines

非常感谢

附注。 或者像这样的东西

lblDeliveryMethod.setOnClickListener {
           // API CALL
            APICALLING()
            suspend {
                delay(1000)
                withContext(Dispatchers.Main) {
                    if (APIRESPONSES) {
                        // DO SOMETHING
                   
                    }
                }
            }
        }

我可以使用这个插件修复它......它就像一个魅力

https://github.com/satoshun/CoroutineAutoDispose

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
  holder.itemView.autoDisposeScope.launch {
    ...
  }
}

不要这样做,这是完全错误的。 在为其设计的组件内执行后台工作,例如 ViewModel,它有一个生命周期,可以在配置更改后继续存在,并且有一个与 ViewModel 的生命周期相关联的 CoroutineScope。

您的 ViewHolder 应该为承载 RecyclerView 的 Fragment/Activity 提供一种方法来注册 onClickListener,并在单击时调用 ViewModel 上的方法。

您可以将 lambda 作为列表项上的构造函数参数,也可以在列表项上使用 setOnClickListener() 方法和一个属性来存储它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM