From 0eb6326b5f8fbc2450ac9156fdf05c41f73f5876 Mon Sep 17 00:00:00 2001 From: Mario Bertschler Date: Wed, 22 Mar 2017 13:14:24 -0700 Subject: [PATCH] Fixes a crash in the AllAppsFastScrollHelper where on updating the activated flag on the views it was trying to retrieve an item from the model for a non-existing position in the model. The fix is to check the position to the model size. It's not clear in what circumstance the model (ArrayList) can differ to the position returned from the view-holder's getAdapterPosition(). Bug: 36176501 Change-Id: I01b8daaad884702f9ed0e1caaa03d0ebaca69d39 --- .../android/launcher3/allapps/AllAppsFastScrollHelper.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/com/android/launcher3/allapps/AllAppsFastScrollHelper.java b/src/com/android/launcher3/allapps/AllAppsFastScrollHelper.java index a1ff8223a2..7d70a3e966 100644 --- a/src/com/android/launcher3/allapps/AllAppsFastScrollHelper.java +++ b/src/com/android/launcher3/allapps/AllAppsFastScrollHelper.java @@ -210,7 +210,9 @@ public class AllAppsFastScrollHelper implements AllAppsGridAdapter.BindViewCallb for (RecyclerView.ViewHolder viewHolder : mTrackedFastScrollViews) { int pos = viewHolder.getAdapterPosition(); boolean isActive = false; - if (mCurrentFastScrollSection != null && pos > -1) { + if (mCurrentFastScrollSection != null + && pos > RecyclerView.NO_POSITION + && pos < mApps.getAdapterItems().size()) { AlphabeticalAppsList.AdapterItem item = mApps.getAdapterItems().get(pos); isActive = item != null && mCurrentFastScrollSection.equals(item.sectionName) &&