ViewHolder中的协程? [科特琳]

问题描述

我想知道是否有可能在async def producer(): return await asyncio.get_event_loop().run_in_executor(None,lambda: input("Enter something: ")) 内启动Coroutine,我的意思是,想象一下,您按下ViewHolder内的一个项目,您需要调用OnBindViewHolder得到回应...我不知道是否可以在其中使用API

非常感谢

PS。或类似的东西

Coroutines

解决方法

请勿执行此操作,这是完全错误的。在为其专门设计的组件内执行后台工作,例如ViewModel,它具有可在配置更改后保留的生命周期,并且具有与ViewModel的生命周期相关的CoroutineScope。

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

您可以在列表项上使用lambda作为构造函数参数,或者在列表项上具有setOnClickListener()方法以及用于存储它的属性。

,

我可以使用此插件对其进行修复...它的工作原理就像一个魅力

https://github.com/satoshun/CoroutineAutoDispose

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