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)