summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2012-06-06 22:46:42 -0700
committerAdam Powell <adamp@google.com>2012-06-06 22:47:56 -0700
commit28048d011cb0887cd641977ca37e5f2fde04d191 (patch)
tree402fb95dc693d95c633ab88ebfb6b28811bdb64e /core/java
parent538252cd37945612a4761ff03d87022d56e33b96 (diff)
Protect against bogus input for ListViews
Guard against cases where ListView might receive touch events while detached. Update ListMenuPresenter to dispatch a data set change when the backing menu is changed. Bug 6543282 Change-Id: If2fb9b6aa3cf4a1b7070a7cd0de0edf0fc2f4cca
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/widget/AbsListView.java16
-rw-r--r--core/java/com/android/internal/view/menu/ListMenuPresenter.java3
2 files changed, 19 insertions, 0 deletions
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index 5f6073522381..c7d056969693 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -3351,6 +3351,14 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
mPositionScroller.stop();
}
+ if (!mIsAttached) {
+ // Something isn't right.
+ // Since we rely on being attached to get data set change notifications,
+ // don't risk doing anything where we might try to resync and find things
+ // in a bogus state.
+ return false;
+ }
+
if (mFastScroller != null) {
boolean intercepted = mFastScroller.onTouchEvent(ev);
if (intercepted) {
@@ -3846,6 +3854,14 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
mPositionScroller.stop();
}
+ if (!mIsAttached) {
+ // Something isn't right.
+ // Since we rely on being attached to get data set change notifications,
+ // don't risk doing anything where we might try to resync and find things
+ // in a bogus state.
+ return false;
+ }
+
if (mFastScroller != null) {
boolean intercepted = mFastScroller.onInterceptTouchEvent(ev);
if (intercepted) {
diff --git a/core/java/com/android/internal/view/menu/ListMenuPresenter.java b/core/java/com/android/internal/view/menu/ListMenuPresenter.java
index b3e2d2769f23..4882adc99266 100644
--- a/core/java/com/android/internal/view/menu/ListMenuPresenter.java
+++ b/core/java/com/android/internal/view/menu/ListMenuPresenter.java
@@ -88,6 +88,9 @@ public class ListMenuPresenter implements MenuPresenter, AdapterView.OnItemClick
}
}
mMenu = menu;
+ if (mAdapter != null) {
+ mAdapter.notifyDataSetChanged();
+ }
}
@Override