等效于 RecyclerView 中 ViewHolder 的 onAttachedToWindow()/onDetachedFromWindow()

Posted

技术标签:

【中文标题】等效于 RecyclerView 中 ViewHolder 的 onAttachedToWindow()/onDetachedFromWindow()【英文标题】:Equivalent of onAttachedToWindow()/onDetachedFromWindow() for a ViewHolder in RecyclerView 【发布时间】:2016-11-19 18:38:49 【问题描述】:

我正在转换一堆视图以在 RecyclerView 中使用 ViewHolder 模式。我有需要在 onAttachedToWindow() 和 onDetachedFromWindow() 中运行的代码,或者在视图生命周期方面最接近它的代码。我可以做些什么来复制它?

【问题讨论】:

你在找onViewAttachedToWindow(RecyclerView.ViewHolder holder)developer.android.com/reference/android/support/v17/leanback/… 【参考方案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)

【讨论】:

以上是关于等效于 RecyclerView 中 ViewHolder 的 onAttachedToWindow()/onDetachedFromWindow()的主要内容,如果未能解决你的问题,请参考以下文章

是否有与 RecyclerView 等效的 addHeaderView?

Android的RecyclerView.Adapter类使用了泛型,这个类是怎样定义的?

我使用布尔概念来交换回收物品中的文本字段,

获取 RecyclerView 中的可见项目

获取 RecyclerView 中的可见项目

等效于 hive 中 Presto 的 transform() 函数