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

Commit 1638133b authored by Alan Viverette's avatar Alan Viverette
Browse files

Never fully detach header or footer views in AbsListView

AbsListView has special handling of header and footer views that avoids
full attachment; however, we still need to fully detach and reattach
non-header/footer views that cannot be recycled.

Bug: 22239425
Bug: 22238597
Bug: 22214485
Change-Id: Iae5f954fc76522c0a52d0c25e19985ae0196efa2
parent 401aa9d8
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -6605,8 +6605,8 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
        void addScrapView(View scrap, int position) {
            final AbsListView.LayoutParams lp = (AbsListView.LayoutParams) scrap.getLayoutParams();
            if (lp == null) {
                // Can't recycle, skip the scrap heap.
                getSkippedScrap().add(scrap);
                // Can't recycle, but we don't know anything about the view.
                // Ignore it completely.
                return;
            }

@@ -6616,8 +6616,12 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
            // should otherwise not be recycled.
            final int viewType = lp.viewType;
            if (!shouldRecycleViewType(viewType)) {
                // Can't recycle, skip the scrap heap.
                // Can't recycle. If it's not a header or footer, which have
                // special handling and should be ignored, then skip the scrap
                // heap and we'll fully detach the view later.
                if (viewType != ITEM_VIEW_TYPE_HEADER_OR_FOOTER) {
                    getSkippedScrap().add(scrap);
                }
                return;
            }