From 11d5bfde8488505e15aa83275772d84579de04ca Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Wed, 17 Mar 2010 11:08:17 -0700 Subject: [PATCH] Fix NPE in AutoCompleteTextView to tame the monkeys. Bug #2522599 Change-Id: I85654898399e5329585fb6aa5f3890ca4c22e2bf --- .../android/widget/AutoCompleteTextView.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/core/java/android/widget/AutoCompleteTextView.java b/core/java/android/widget/AutoCompleteTextView.java index 54829587acfd8..5b521072b41e0 100644 --- a/core/java/android/widget/AutoCompleteTextView.java +++ b/core/java/android/widget/AutoCompleteTextView.java @@ -660,14 +660,20 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe final boolean below = !mPopup.isAboveAnchor(); - final ListAdapter adapter = mDropDownList.getAdapter(); - final boolean allEnabled = adapter.areAllItemsEnabled(); - - final int firstItem = allEnabled ? 0 : - mDropDownList.lookForSelectablePosition(0, true); - final int lastItem = allEnabled ? adapter.getCount() - 1 : - mDropDownList.lookForSelectablePosition(adapter.getCount() - 1, false); + final ListAdapter adapter = mAdapter; + + boolean allEnabled; + int firstItem = Integer.MAX_VALUE; + int lastItem = Integer.MIN_VALUE; + if (adapter != null) { + allEnabled = adapter.areAllItemsEnabled(); + firstItem = allEnabled ? 0 : + mDropDownList.lookForSelectablePosition(0, true); + lastItem = allEnabled ? adapter.getCount() - 1 : + mDropDownList.lookForSelectablePosition(adapter.getCount() - 1, false); + } + if ((below && keyCode == KeyEvent.KEYCODE_DPAD_UP && curIndex <= firstItem) || (!below && keyCode == KeyEvent.KEYCODE_DPAD_DOWN && curIndex >= lastItem)) { // When the selection is at the top, we block the key