From f85e673980bea51941488eeeeba2d30832384ae2 Mon Sep 17 00:00:00 2001 From: Yigit Boyar Date: Mon, 15 Jun 2015 19:02:50 -0700 Subject: [PATCH] Handle negative view types properly in getScrapView ListView had a bug where it would pass wrong view to the adapter if adapter is using HEADER or IGNORE types for views. This CL fixes that issue and ensures that ListView will not try to search scrap view lists for these views which are never recycled. Bug: 19409057 Change-Id: I2653bbca93fbaf48567b47d10f273c8921d59bd2 --- core/java/android/widget/AbsListView.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 0001860fe2a60..6454b57d6619e 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -6575,13 +6575,14 @@ public abstract class AbsListView extends AdapterView implements Te * @return A view from the ScrapViews collection. These are unordered. */ View getScrapView(int position) { + final int whichScrap = mAdapter.getItemViewType(position); + if (whichScrap < 0) { + return null; + } if (mViewTypeCount == 1) { return retrieveFromScrap(mCurrentScrap, position); - } else { - final int whichScrap = mAdapter.getItemViewType(position); - if (whichScrap >= 0 && whichScrap < mScrapViews.length) { - return retrieveFromScrap(mScrapViews[whichScrap], position); - } + } else if (whichScrap < mScrapViews.length) { + return retrieveFromScrap(mScrapViews[whichScrap], position); } return null; }