我在理解官方文档中使用的术语时遇到一些问题。具体有以下方法
onViewRecycled
、onDetachedFromRecyclerView
和
onViewDetachedFromWindow
。这三者有什么区别?
最佳答案
即使在他们的签名中也有显着差异:
onDetachedFromRecyclerView(RecyclerView recyclerView)
- 当 RecyclerView 停止观察此适配器时由 RecyclerView 调用。
你可能没有注意到,在这个方法之前总是调用一个匹配方法:
onAttachedToRecyclerView(RecyclerView recyclerView)
- 当 RecyclerView 开始观察这个 Adapter 时调用。
当您调用 recyclerView.setAdapter(adapter)
时,adapter
会收到对 onAttachedToRecyclerView(recyclerView)
的调用。然后调用 recyclerView.setAdapter(null)
将触发 adapter
的 onDetachedFromRecyclerView(recyclerView)
。
除了某些特殊情况(比如保持对观察到的 recyclerView
的计数等)之外,您通常不需要重写此方法。
onViewRecycled(VH holder)
更简单,它在将viewHolder
发送到recycleViewPool
之前调用。
您可以将其视为 onBindViewHolder(VH holder, int position)
的“清理”方法.
onViewDetachedFromWindow(VH holder)
始终遵循匹配 onViewAttachedToWindow(VH holder)
.它在 viewholder 变得可见或不可见(附加或分离调用)的确切时刻被调用。
如果 viewHolder
已分离但尚未回收,它可能可以再次接收 onViewAttachedToWindow(ViewHolder)
调用,而无需使用 onBindViewHolder重新绑定(bind)数据
.
关于android - Android中onViewRecycled、onDetachedFromRecyclerView、onViewDetachedFromWindow的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51069491/