【问题标题】:Equivalent of onAttachedToWindow()/onDetachedFromWindow() for a ViewHolder in RecyclerView等效于 RecyclerView 中 ViewHolder 的 onAttachedToWindow()/onDetachedFromWindow()
【发布时间】:2016-11-19 18:38:49
【问题描述】:
我正在转换一堆视图以在 RecyclerView 中使用 ViewHolder 模式。我有需要在 onAttachedToWindow() 和 onDetachedFromWindow() 中运行的代码,或者在视图生命周期方面最接近它的代码。我可以做些什么来复制它?
【问题讨论】:
标签:
android
android-recyclerview
android-viewholder
【解决方案1】:
我们可以在我们的ViewHolder 中实现View.OnAttachStateChangeListener:
class SomeViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView),
View.OnAttachStateChangeListener {
...
init {
itemView.addOnAttachStateChangeListener(this)
}
override fun onViewDetachedFromWindow(v: View?) {
// Do what you need
}
override fun onViewAttachedToWindow(v: View?) {
// Do what you need
}
}
在Adapter 中我们在onCreateViewHolder(...) 中设置视图:
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SomeViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.some_item, parent, false)
return SomeViewHolder(view)
}