android - Android中onViewRecycled、onDetachedFromRecyclerView、onViewDetachedFromWindow的区别

标签 android android-recyclerview

我在理解官方文档中使用的术语时遇到一些问题。具体有以下方法 onViewRecycledonDetachedFromRecyclerViewonViewDetachedFromWindow。这三者有什么区别?

最佳答案

即使在他们的签名中也有显着差异:

onDetachedFromRecyclerView(RecyclerView recyclerView) - 当 RecyclerView 停止观察此适配器时由 RecyclerView 调用。

你可能没有注意到,在这个方法之前总是调用一个匹配方法:

onAttachedToRecyclerView(RecyclerView recyclerView) - 当 RecyclerView 开始观察这个 Adapter 时调用。

当您调用 recyclerView.setAdapter(adapter) 时,adapter 会收到对 onAttachedToRecyclerView(recyclerView) 的调用。然后调用 recyclerView.setAdapter(null) 将触发 adapteronDetachedFromRecyclerView(recyclerView)

除了某些特殊情况(比如保持对观察到的 recyclerView 的计数等)之外,您通常不需要重写此方法。


onViewRecycled(VH holder)更简单,它在将viewHolder发送到recycleViewPool之前调用。

您可以将其视为 onBindViewHolder(VH holder, int position) 的“清理”方法.


onViewDetachedFromWindow(VH holder)始终遵循匹配 onViewAttachedToWindow(VH holder) .它在 viewholder 变得可见或不可见(附加或分离调用)的确切时刻被调用。

如果 viewHolder 已分离但尚未回收,它可能可以再次接收 onViewAttachedToWindow(ViewHolder) 调用,而无需使用 onBindViewHolder.

关于android - Android中onViewRecycled、onDetachedFromRecyclerView、onViewDetachedFromWindow的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51069491/

相关文章:

android - RecyclerView onClick notifyItemRemoved 不会触发 onBindView

android - 如何为无限滚动的 RecyclerView 绘制背景

android - 如何以编程方式打开选项菜单?

android - (Android) 无法从同一包中的另一个 Activity 调用一个 Activity

android - Hammer.js 水龙头在 Android 上很慢?

android - 在数据库中删除/插入行后使用 ArrayAdapter 更新 ListView

android - 没有连接适配器;跳过布局 : RecyclerView & Adapter

android - 我如何使用 EditText 而不是 TextView 并单击一次打开 datePicker?

android - 我应该在依赖项中使用什么版本的 recyclerview?

android - 如何从 Activity/Fragment 调用 ViewHolder 方法