summaryrefslogtreecommitdiffstats
path: root/core/java/android/widget
diff options
context:
space:
mode:
authorAlan Viverette <alanv@google.com>2015-08-26 15:21:39 -0400
committerAlan Viverette <alanv@google.com>2015-08-26 15:22:09 -0400
commit898c7045e08bdb2209efbccf853a3376fc2070ff (patch)
tree1c9b5f1f63c48bdd7cd076bbbec31f043ea2a0c2 /core/java/android/widget
parentc04d21fc4ec66d34ca5395db59fadc5e4626bb1c (diff)
downloadframeworks_base-898c7045e08bdb2209efbccf853a3376fc2070ff.zip
frameworks_base-898c7045e08bdb2209efbccf853a3376fc2070ff.tar.gz
frameworks_base-898c7045e08bdb2209efbccf853a3376fc2070ff.tar.bz2
Avoid NPE when getPositionForView() is called on detached view
Bug: 23557674 Change-Id: I76cb5f06081b2ac4c8f535df8d1a0aee17d2bb20
Diffstat (limited to 'core/java/android/widget')
-rw-r--r--core/java/android/widget/AdapterView.java14
1 files changed, 8 insertions, 6 deletions
diff --git a/core/java/android/widget/AdapterView.java b/core/java/android/widget/AdapterView.java
index 6962711..0cc1b25 100644
--- a/core/java/android/widget/AdapterView.java
+++ b/core/java/android/widget/AdapterView.java
@@ -612,7 +612,7 @@ public abstract class AdapterView<T extends Adapter> extends ViewGroup {
View listItem = view;
try {
View v;
- while (!(v = (View) listItem.getParent()).equals(this)) {
+ while ((v = (View) listItem.getParent()) != null && !v.equals(this)) {
listItem = v;
}
} catch (ClassCastException e) {
@@ -620,11 +620,13 @@ public abstract class AdapterView<T extends Adapter> extends ViewGroup {
return INVALID_POSITION;
}
- // Search the children for the list item
- final int childCount = getChildCount();
- for (int i = 0; i < childCount; i++) {
- if (getChildAt(i).equals(listItem)) {
- return mFirstPosition + i;
+ if (listItem != null) {
+ // Search the children for the list item
+ final int childCount = getChildCount();
+ for (int i = 0; i < childCount; i++) {
+ if (getChildAt(i).equals(listItem)) {
+ return mFirstPosition + i;
+ }
}
}