From 176f9fc215194411cf0461a178d77fa57486112b Mon Sep 17 00:00:00 2001 From: Gilles Debunne Date: Tue, 2 Mar 2010 11:00:50 -0800 Subject: [PATCH] Null pointer tests removed from HeaderViewListAdapter. The mHeaderViewInfos and mFooterViewInfos lists were sometimes tested for nullity and sometimes not. Should these values be null, some conditionnal code was actually flawed in getView() and getItem() because of too strong 'and' conditionnals. These lists are created upon declaration in ListView and are then shared and hence cannot be null. Null tests were hence removed. getView() and getItem() get simpler and work as before. Change-Id: I279e482730ce6148a559d15a9863afc8f6b67780 --- .../android/widget/HeaderViewListAdapter.java | 18 +++++++++--------- core/java/android/widget/ListView.java | 8 ++++---- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/core/java/android/widget/HeaderViewListAdapter.java b/core/java/android/widget/HeaderViewListAdapter.java index b0e5f7eb8ee13..981996a30b5f7 100644 --- a/core/java/android/widget/HeaderViewListAdapter.java +++ b/core/java/android/widget/HeaderViewListAdapter.java @@ -34,6 +34,8 @@ public class HeaderViewListAdapter implements WrapperListAdapter, Filterable { private ListAdapter mAdapter; + // These two ArrayList are assumed to NOT be null. + // They are indeed created when declared in ListView and then shared. ArrayList mHeaderViewInfos; ArrayList mFooterViewInfos; boolean mAreAllFixedViewsSelectable; @@ -55,11 +57,11 @@ public class HeaderViewListAdapter implements WrapperListAdapter, Filterable { } public int getHeadersCount() { - return mHeaderViewInfos == null ? 0 : mHeaderViewInfos.size(); + return mHeaderViewInfos.size(); } public int getFootersCount() { - return mFooterViewInfos == null ? 0 : mFooterViewInfos.size(); + return mFooterViewInfos.size(); } public boolean isEmpty() { @@ -132,12 +134,12 @@ public class HeaderViewListAdapter implements WrapperListAdapter, Filterable { if (mAdapter != null && position >= numHeaders) { int adjPosition = position - numHeaders; int adapterCount = mAdapter.getCount(); - if (adjPosition >= adapterCount && mFooterViewInfos != null) { + if (adjPosition >= adapterCount) { return mFooterViewInfos.get(adjPosition - adapterCount).isSelectable; } else { return mAdapter.isEnabled(adjPosition); } - } else if (position < numHeaders && mHeaderViewInfos != null) { + } else if (position < numHeaders) { return mHeaderViewInfos.get(position).isSelectable; } return true; @@ -148,12 +150,12 @@ public class HeaderViewListAdapter implements WrapperListAdapter, Filterable { if (mAdapter != null && position >= numHeaders) { int adjPosition = position - numHeaders; int adapterCount = mAdapter.getCount(); - if (adjPosition >= adapterCount && mFooterViewInfos != null) { + if (adjPosition >= adapterCount) { return mFooterViewInfos.get(adjPosition - adapterCount).data; } else { return mAdapter.getItem(adjPosition); } - } else if (position < numHeaders && mHeaderViewInfos != null) { + } else if (position < numHeaders) { return mHeaderViewInfos.get(position).data; } return null; @@ -184,9 +186,7 @@ public class HeaderViewListAdapter implements WrapperListAdapter, Filterable { int adjPosition = position - numHeaders; int adapterCount = mAdapter.getCount(); if (adjPosition >= adapterCount) { - if (mFooterViewInfos != null) { - return mFooterViewInfos.get(adjPosition - adapterCount).view; - } + return mFooterViewInfos.get(adjPosition - adapterCount).view; } else { return mAdapter.getView(adjPosition, convertView, parent); } diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java index 7f77fa9b75009..88f2e123096cf 100644 --- a/core/java/android/widget/ListView.java +++ b/core/java/android/widget/ListView.java @@ -246,7 +246,7 @@ public class ListView extends AbsListView { * added. Views added using this call can take focus if they want. *

* NOTE: Call this before calling setAdapter. This is so ListView can wrap - * the supplied cursor with one that that will also account for header + * the supplied cursor with one that will also account for header and footer * views. * * @param v The view to add. @@ -273,7 +273,7 @@ public class ListView extends AbsListView { * added. Views added using this call can take focus if they want. *

* NOTE: Call this before calling setAdapter. This is so ListView can wrap - * the supplied cursor with one that that will also account for header + * the supplied cursor with one that will also account for header and footer * views. * * @param v The view to add. @@ -324,7 +324,7 @@ public class ListView extends AbsListView { * added. Views added using this call can take focus if they want. *

* NOTE: Call this before calling setAdapter. This is so ListView can wrap - * the supplied cursor with one that that will also account for header + * the supplied cursor with one that will also account for header and footer * views. * * @param v The view to add. @@ -350,7 +350,7 @@ public class ListView extends AbsListView { * than once, the views will appear in the order they were added. Views added using * this call can take focus if they want. *

NOTE: Call this before calling setAdapter. This is so ListView can wrap the supplied - * cursor with one that that will also account for header views. + * cursor with one that will also account for header and footer views. * * * @param v The view to add.