diff options
| author | 2012-05-08 22:22:52 -0700 | |
|---|---|---|
| committer | 2012-05-08 22:28:36 -0700 | |
| commit | 76889f3482d6391b17f0961f7356c1e8169c8813 (patch) | |
| tree | 35cd11ac8d4f2aee01ef01d8a3300b74bf7ab417 | |
| parent | 1e5c3336e8b16c0a46542f59df53f0fa31d82d6d (diff) | |
Forgive me monkeys, for I have sinned.
It has been several hours since my last commit.
Fix an obscure bug that could cause call ordering problems while
updating ListAdapter-based MenuPresenters. This would trigger an
inconsistent return value from the adapter's getCount method that
didn't take the expanded menu item into account, resulting in the
infamous ListView "you didn't call notifyDataSetChanged" exception.
Bug 6412318
Change-Id: I6262846d9c2acdb87ff99116ad78ca4a388efa6d
| -rw-r--r-- | core/java/com/android/internal/view/menu/ListMenuPresenter.java | 8 | ||||
| -rw-r--r-- | core/java/com/android/internal/view/menu/MenuPopupHelper.java | 8 |
2 files changed, 6 insertions, 10 deletions
diff --git a/core/java/com/android/internal/view/menu/ListMenuPresenter.java b/core/java/com/android/internal/view/menu/ListMenuPresenter.java index a331bec53dc4..b3e2d2769f23 100644 --- a/core/java/com/android/internal/view/menu/ListMenuPresenter.java +++ b/core/java/com/android/internal/view/menu/ListMenuPresenter.java @@ -220,7 +220,6 @@ public class ListMenuPresenter implements MenuPresenter, AdapterView.OnItemClick private int mExpandedIndex = -1; public MenuAdapter() { - registerDataSetObserver(new ExpandedIndexObserver()); findExpandedIndex(); } @@ -273,12 +272,11 @@ public class ListMenuPresenter implements MenuPresenter, AdapterView.OnItemClick } mExpandedIndex = -1; } - } - private class ExpandedIndexObserver extends DataSetObserver { @Override - public void onChanged() { - mAdapter.findExpandedIndex(); + public void notifyDataSetChanged() { + findExpandedIndex(); + super.notifyDataSetChanged(); } } } diff --git a/core/java/com/android/internal/view/menu/MenuPopupHelper.java b/core/java/com/android/internal/view/menu/MenuPopupHelper.java index 329b457b56c9..cacc86b0f3d9 100644 --- a/core/java/com/android/internal/view/menu/MenuPopupHelper.java +++ b/core/java/com/android/internal/view/menu/MenuPopupHelper.java @@ -307,7 +307,6 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On public MenuAdapter(MenuBuilder menu) { mAdapterMenu = menu; - registerDataSetObserver(new ExpandedIndexObserver()); findExpandedIndex(); } @@ -363,12 +362,11 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On } mExpandedIndex = -1; } - } - private class ExpandedIndexObserver extends DataSetObserver { @Override - public void onChanged() { - mAdapter.findExpandedIndex(); + public void notifyDataSetChanged() { + findExpandedIndex(); + super.notifyDataSetChanged(); } } } |