Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 176f9fc2 authored by Gilles Debunne's avatar Gilles Debunne
Browse files

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
parent 3c5d27ab
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -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<ListView.FixedViewInfo> mHeaderViewInfos;
    ArrayList<ListView.FixedViewInfo> 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;
                }
            } else {
                return mAdapter.getView(adjPosition, convertView, parent);
            }
+4 −4
Original line number Diff line number Diff line
@@ -246,7 +246,7 @@ public class ListView extends AbsListView {
     * added. Views added using this call can take focus if they want.
     * <p>
     * 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.
     * <p>
     * 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.
     * <p>
     * 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.
     * <p>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.