Don't cache mFirstPosition before a layoutChildren in ListView.onFocusChanged
diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java
index 5308725c..2feed03 100644
--- a/core/java/android/widget/ListView.java
+++ b/core/java/android/widget/ListView.java
@@ -3092,9 +3092,9 @@
             previouslyFocusedRect.offset(mScrollX, mScrollY);
 
             final ListAdapter adapter = mAdapter;
-            final int firstPosition = mFirstPosition;
-            // Don't cache the result of getChildCount here, it could change in layoutChildren.
-            if (adapter.getCount() < getChildCount() + firstPosition) {
+            // Don't cache the result of getChildCount or mFirstPosition here,
+            // it could change in layoutChildren.
+            if (adapter.getCount() < getChildCount() + mFirstPosition) {
                 mLayoutMode = LAYOUT_NORMAL;
                 layoutChildren();
             }
@@ -3104,6 +3104,7 @@
             Rect otherRect = mTempRect;
             int minDistance = Integer.MAX_VALUE;
             final int childCount = getChildCount();
+            final int firstPosition = mFirstPosition;
 
             for (int i = 0; i < childCount; i++) {
                 // only consider selectable views