From 2e447d46d9936c325fe5209262564fc3c5e795a2 Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Tue, 28 Apr 2009 18:01:24 -0700 Subject: [PATCH] Fixes 1819406. Take a ListView, add headers/footers, set the adapter after at least one layout pass, and the headers/footers don't know they have a parent anymore. Which causes a lot of trouble, like drawing not happening. --- core/java/android/widget/ListView.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java index 1daee4e2c7e0d..66c162eefc6dd 100644 --- a/core/java/android/widget/ListView.java +++ b/core/java/android/widget/ListView.java @@ -460,10 +460,30 @@ public class ListView extends AbsListView { */ @Override void resetList() { + // The parent's resetList() will remove all views from the layout so we need to + // cleanup the state of our footers and headers + clearRecycledState(mHeaderViewInfos); + clearRecycledState(mFooterViewInfos); + super.resetList(); + mLayoutMode = LAYOUT_NORMAL; } + private void clearRecycledState(ArrayList infos) { + if (infos != null) { + final int count = infos.size(); + + for (int i = 0; i < count; i++) { + final View child = infos.get(i).view; + final LayoutParams p = (LayoutParams) child.getLayoutParams(); + if (p != null) { + p.recycledHeaderFooter = false; + } + } + } + } + /** * @return Whether the list needs to show the top fading edge */