From 6c413ce6382d083c0f34fb9c8f5220e1cf467650 Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Wed, 3 Jun 2015 10:35:44 -0700 Subject: [PATCH] Call dispatchFinishTemporaryDetach before returning a transient view ListView caches transient state views for reuse during layout, which calls dispatchStartTemporaryDetach() before caching the view. This should always be followed by a corresponding dispatchFinishTemporaryDetach() before removing the view from the cache and returning it for reuse. While this was the case for other types of cached views, we missed this call for views placed in one of the two transient view caches. Bug: 17387206 Change-Id: I360945006558b2783c098183a7cc9bc28d05d9ab --- core/java/android/widget/AbsListView.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index a3332fa21f2ca..a0d19300e869d 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -2345,8 +2345,10 @@ public abstract class AbsListView extends AdapterView implements Te } } - // Scrap view implies temporary detachment. isScrap[0] = true; + + // Finish the temporary detach started in addScrapView(). + transientView.dispatchFinishTemporaryDetach(); return transientView; } @@ -2359,6 +2361,7 @@ public abstract class AbsListView extends AdapterView implements Te } else { isScrap[0] = true; + // Finish the temporary detach started in addScrapView(). child.dispatchFinishTemporaryDetach(); } }