web-dev-qa-db-ja.com

AndroidのonViewRecycled、onDetachedFromRecyclerView、onViewDetachedFromWindowの違い

公式ドキュメントで使用されている用語を理解できません。具体的には、メソッドonViewRecycledonDetachedFromRecyclerViewonViewDetachedFromWindowがあります。これら3つの違いは何ですか?

9
pricks

署名にも大きな違いがあります。

onDetachedFromRecyclerView(RecyclerView recyclerView)-このアダプタの監視を停止すると、RecyclerViewによって呼び出されます。

気づかなかったかもしれませんが、このメソッドの前に常に呼び出されるマッチングメソッドがあります。

onAttachedToRecyclerView(RecyclerView recyclerView)-このアダプタの監視を開始すると、RecyclerViewによって呼び出されます。

recyclerView.setAdapter(adapter)を呼び出すと、adapteronAttachedToRecyclerView(recyclerView)の呼び出しを受け取ります。次に、recyclerView.setAdapter()を呼び出すと、adapters onDetachedFromRecyclerView(recyclerView)がトリガーされます。

いくつかの特別な状況(観測されたrecyclerViewsのカウントを維持するなど)を除いて、通常はこのメソッドをオーバーライドする必要はありません。


onViewRecycled(VH holder)ははるかに単純です。viewHolderrecycleViewPoolに送信する前に呼び出されます。

onBindViewHolder(VH holder, int position)の「クリーンアップ」メソッドと考えることができます。


onViewDetachedFromWindow(VH holder)は常に、対応するonViewAttachedToWindow(VH holder)の後に続きます。これは、viewholderが表示または非表示になる(アタッチ/デタッチコール)正確な瞬間に呼び出されます。

viewHolderがデタッチされたが、まだリサイクルされていない場合、onBindViewHolderを使用してデータを再バインドする必要なく、onViewAttachedToWindow(ViewHolder)呼び出しを再度受け取ることができます。

21
Pawel