summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adam Powell <adamp@google.com> 2012-05-08 22:22:52 -0700
committer Adam Powell <adamp@google.com> 2012-05-08 22:28:36 -0700
commit76889f3482d6391b17f0961f7356c1e8169c8813 (patch)
tree35cd11ac8d4f2aee01ef01d8a3300b74bf7ab417
parent1e5c3336e8b16c0a46542f59df53f0fa31d82d6d (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.java8
-rw-r--r--core/java/com/android/internal/view/menu/MenuPopupHelper.java8
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();
}
}
}