簡體   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