summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2010-10-24 16:29:46 -0700
committerAdam Powell <adamp@google.com>2010-10-24 19:30:18 -0700
commit6a0d09944b550b15dce6ead35917e80205cbf09b (patch)
tree2c3c591a23fad040e99ebf66a1c102552e4b093d /core
parentaa6110d84024776674131eb3b7a609499cf48810 (diff)
downloadframeworks_base-6a0d09944b550b15dce6ead35917e80205cbf09b.zip
frameworks_base-6a0d09944b550b15dce6ead35917e80205cbf09b.tar.gz
frameworks_base-6a0d09944b550b15dce6ead35917e80205cbf09b.tar.bz2
Fix bug 2964954 - Lists blow up if their adapter changes while detached.
If a list adapter's content changes while the ListView is detached from a window, the data change is not registered and the next layoutChildren call causes the ListView to detect a bad change that the adapter did not notify ListView about. Any time a ListView becomes attached to a window, has a valid adapter, and no attached data set observer, treat it as a data set changed event. Change-Id: Ic00c05a1a0d063399dc78d5d877e3d5f9b1bee16
Diffstat (limited to 'core')
-rw-r--r--core/java/android/widget/AbsListView.java5
1 files changed, 5 insertions, 0 deletions
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index 740521b..728c2a7 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -1988,6 +1988,11 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
if (mAdapter != null && mDataSetObserver == null) {
mDataSetObserver = new AdapterDataSetObserver();
mAdapter.registerDataSetObserver(mDataSetObserver);
+
+ // Data may have changed while we were detached. Refresh.
+ mDataChanged = true;
+ mOldItemCount = mItemCount;
+ mItemCount = mAdapter.getCount();
}
}