From 478a745e8421497bad9ea0cbd75bc4d4d419ef60 Mon Sep 17 00:00:00 2001 From: Gilles Debunne Date: Tue, 23 Mar 2010 16:44:48 -0700 Subject: [PATCH] null header and footer allowed in HeaderViewListAdapter. The view infos should never be null since they are created by ListView, which is the natural and only use of this class. However, some tests in CTS pass null pointers. Replace null by a static empty list. http://b/issue?id=2527753 Change-Id: I9b92fa018c89007f12be899285f75130b2c8ac40 --- .../android/widget/HeaderViewListAdapter.java | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/core/java/android/widget/HeaderViewListAdapter.java b/core/java/android/widget/HeaderViewListAdapter.java index ca97987dd9805..e2a269ea13efb 100644 --- a/core/java/android/widget/HeaderViewListAdapter.java +++ b/core/java/android/widget/HeaderViewListAdapter.java @@ -31,15 +31,21 @@ import java.util.ArrayList; */ public class HeaderViewListAdapter implements WrapperListAdapter, Filterable { - private ListAdapter mAdapter; + private final ListAdapter mAdapter; // These two ArrayList are assumed to NOT be null. - // They are indeed created when declared in ListView and then shared. + // They are indeed created when declared in ListView and then shared. ArrayList mHeaderViewInfos; ArrayList mFooterViewInfos; + + // Used as a placeholder in case the provided info views are indeed null. + // Currently only used by some CTS tests, which may be removed. + static final ArrayList EMPTY_INFO_LIST = + new ArrayList(); + boolean mAreAllFixedViewsSelectable; - private boolean mIsFilterable; + private final boolean mIsFilterable; public HeaderViewListAdapter(ArrayList headerViewInfos, ArrayList footerViewInfos, @@ -47,8 +53,17 @@ public class HeaderViewListAdapter implements WrapperListAdapter, Filterable { mAdapter = adapter; mIsFilterable = adapter instanceof Filterable; - mHeaderViewInfos = headerViewInfos; - mFooterViewInfos = footerViewInfos; + if (headerViewInfos == null) { + mHeaderViewInfos = EMPTY_INFO_LIST; + } else { + mHeaderViewInfos = headerViewInfos; + } + + if (footerViewInfos == null) { + mFooterViewInfos = EMPTY_INFO_LIST; + } else { + mFooterViewInfos = footerViewInfos; + } mAreAllFixedViewsSelectable = areAllListInfosSelectable(mHeaderViewInfos)