From 2b460d08dc3e670916c334bbc807961bf9d3e8d2 Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Mon, 6 Jul 2015 11:01:50 -0700 Subject: [PATCH] Remember focused child during layout when adapter has stable IDs Ensures behavior is consistent between accessibility focus retention and keyboard focus retention. Attempts to retain focus when possible. Bug: 22207825 Change-Id: I62360892f52d456e2128f93a2dbf18f2bc934ef3 --- core/java/android/widget/ListView.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java index 9568492d254f5..c5632ec91fe46 100644 --- a/core/java/android/widget/ListView.java +++ b/core/java/android/widget/ListView.java @@ -1621,7 +1621,8 @@ public class ListView extends AbsListView { // We can remember the focused view to restore after re-layout // if the data hasn't changed, or if the focused position is a // header or footer. - if (!dataChanged || isDirectChildHeaderOrFooter(focusedChild)) { + if (!dataChanged || isDirectChildHeaderOrFooter(focusedChild) + || focusedChild.hasTransientState() || mAdapterHasStableIds) { focusLayoutRestoreDirectChild = focusedChild; // Remember the specific view that had focus. focusLayoutRestoreView = findFocus();