summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorAndrei Stingaceanu <stg@google.com>2016-04-25 14:17:37 +0100
committerAndrei Stingaceanu <stg@google.com>2016-04-27 11:29:26 +0100
commitcf3811052672f197916644e7fda526524b506bb1 (patch)
tree63b2c3d954179bfdd35e29f55290632d81cd3a98 /core/java/android
parent9c51583dafdbfeb7e005e12dd646e4395cf7a537 (diff)
Fix ListView losing scroll position
Restrict restoring the selected position when AdapterView gets restored for Spinner instances only. Bug: 26991402 Bug: 23619366 Change-Id: Ib002eac5ed0b8810a3e9988ad36f03450cb03b9b
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/widget/AbsSpinner.java12
-rw-r--r--core/java/android/widget/AdapterView.java1
2 files changed, 10 insertions, 3 deletions
diff --git a/core/java/android/widget/AbsSpinner.java b/core/java/android/widget/AbsSpinner.java
index 1cb7f2ac60b1..18db54ec5da0 100644
--- a/core/java/android/widget/AbsSpinner.java
+++ b/core/java/android/widget/AbsSpinner.java
@@ -356,10 +356,18 @@ public abstract class AbsSpinner extends AdapterView<SpinnerAdapter> {
return mFirstPosition + i;
}
}
- }
+ }
return INVALID_POSITION;
}
-
+
+ @Override
+ protected void dispatchRestoreInstanceState(SparseArray<Parcelable> container) {
+ super.dispatchRestoreInstanceState(container);
+ // Restores the selected position when Spinner gets restored,
+ // rather than wait until the next measure/layout pass to do it.
+ handleDataChanged();
+ }
+
static class SavedState extends BaseSavedState {
long selectedId;
int position;
diff --git a/core/java/android/widget/AdapterView.java b/core/java/android/widget/AdapterView.java
index 6ed7ab8fde68..2cfefba10c57 100644
--- a/core/java/android/widget/AdapterView.java
+++ b/core/java/android/widget/AdapterView.java
@@ -815,7 +815,6 @@ public abstract class AdapterView<T extends Adapter> extends ViewGroup {
@Override
protected void dispatchRestoreInstanceState(SparseArray<Parcelable> container) {
dispatchThawSelfOnly(container);
- handleDataChanged();
}
class AdapterDataSetObserver extends DataSetObserver {