diff options
| author | Adam Powell <adamp@google.com> | 2012-06-06 22:46:42 -0700 |
|---|---|---|
| committer | Adam Powell <adamp@google.com> | 2012-06-06 22:47:56 -0700 |
| commit | 28048d011cb0887cd641977ca37e5f2fde04d191 (patch) | |
| tree | 402fb95dc693d95c633ab88ebfb6b28811bdb64e /core/java | |
| parent | 538252cd37945612a4761ff03d87022d56e33b96 (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.java | 16 | ||||
| -rw-r--r-- | core/java/com/android/internal/view/menu/ListMenuPresenter.java | 3 |
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 |
