我需要访问 onBindViewHolder 内的房间数据库。在 Activity 中使用时效果很好。但是我如何在 onBindViewHolder 中启动生命周期作用域?
import androidx.lifecycle.lifecycleScope
class ProjectRecyclerViewAdapter(
private val values: ArrayList<ProjectEntity>,
private val itemClickListener: OnProjectItemClickListener
) : RecyclerView.Adapter<ProjectRecyclerViewAdapter.ViewHolder>() {
lateinit var context: Context
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view =
LayoutInflater.from(parent.context).inflate(R.layout.fragment_item_project, parent, false)
context = parent.context
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val item = values[position]
holder.name.text = item.title
lifecycleScope.launch {
DataBaseHelper.getRolesByIDFromDB(context, item.fsId!!)
}
}
}
最佳答案
嗯,正如其他人所说,在适配器
中访问数据库并不是最佳实践。
最好在获得ArrayList
数据后立即访问数据库。
但是如果你坚持的话,你可以使用这个代码
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val item = values[position]
holder.name.text = item.title
GlobalScope.launch {
DataBaseHelper.getRolesByIDFromDB(context, item.fsId!!)
}
}
关于android - 访问 RecyclerViewAdapter 内的生命周期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63423721/