简体   繁体   English

相当于 RecyclerView 中 ViewHolder 的 onAttachedToWindow()/onDetachedFromWindow()

[英]Equivalent of onAttachedToWindow()/onDetachedFromWindow() for a ViewHolder in RecyclerView

I'm converting a bunch of Views to use the ViewHolder pattern in RecyclerView instead.我正在转换一堆视图以在 RecyclerView 中使用 ViewHolder 模式。 I have code that needs to be run in onAttachedToWindow() and onDetachedFromWindow(), or whatever's closest to it in terms of the View lifecycle.我有代码需要在 onAttachedToWindow() 和 onDetachedFromWindow() 中运行,或者在 View 生命周期方面最接近它的任何代码。 What can I do to replicate that?我能做些什么来复制它?

We can implement View.OnAttachStateChangeListener in our ViewHolder :我们可以实现View.OnAttachStateChangeListener我们ViewHolder

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
    }
}

In Adapter we set view in onCreateViewHolder(...) :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)
}

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

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