diff options
| -rw-r--r-- | core/java/android/widget/AbsListView.java | 8 | ||||
| -rw-r--r-- | core/java/android/widget/ListView.java | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 1937187defed..99b91bdf046b 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -6873,9 +6873,11 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te mTransientStateViews.put(position, scrap); } else { // Otherwise, we'll have to remove the view and start over. + clearScrapForRebind(scrap); getSkippedScrap().add(scrap); } } else { + clearScrapForRebind(scrap); if (mViewTypeCount == 1) { mCurrentScrap.add(scrap); } else { @@ -7098,12 +7100,12 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te } } else if (params.scrappedFromPosition == position) { final View scrap = scrapViews.remove(i); - clearAccessibilityFromScrap(scrap); + clearScrapForRebind(scrap); return scrap; } } final View scrap = scrapViews.remove(size - 1); - clearAccessibilityFromScrap(scrap); + clearScrapForRebind(scrap); return scrap; } else { return null; @@ -7117,7 +7119,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te } } - private void clearAccessibilityFromScrap(View view) { + private void clearScrapForRebind(View view) { view.clearAccessibilityFocus(); view.setAccessibilityDelegate(null); } diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java index 1c0c4ef7cba7..12e35a14e381 100644 --- a/core/java/android/widget/ListView.java +++ b/core/java/android/widget/ListView.java @@ -1639,7 +1639,7 @@ public class ListView extends AbsListView { final View focusChild = getAccessibilityFocusedChild(focusHost); if (focusChild != null) { if (!dataChanged || isDirectChildHeaderOrFooter(focusChild) - || focusChild.hasTransientState() || mAdapterHasStableIds) { + || (focusChild.hasTransientState() && mAdapterHasStableIds)) { // The views won't be changing, so try to maintain // focus on the current host and virtual view. accessibilityFocusLayoutRestoreView = focusHost; |