diff options
Diffstat (limited to 'core/java/android')
-rw-r--r-- | core/java/android/widget/ListView.java | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java index 2e9858c..ba6f061 100644 --- a/core/java/android/widget/ListView.java +++ b/core/java/android/widget/ListView.java @@ -2420,10 +2420,15 @@ public class ListView extends AbsListView { (ViewGroup) selectedView, currentFocus, direction); if (nextFocus != null) { // do the math to get interesting rect in next focus' coordinates - currentFocus.getFocusedRect(mTempRect); - offsetDescendantRectToMyCoords(currentFocus, mTempRect); - offsetRectIntoDescendantCoords(nextFocus, mTempRect); - if (nextFocus.requestFocus(direction, mTempRect)) { + Rect focusedRect = mTempRect; + if (currentFocus != null) { + currentFocus.getFocusedRect(focusedRect); + offsetDescendantRectToMyCoords(currentFocus, focusedRect); + offsetRectIntoDescendantCoords(nextFocus, focusedRect); + } else { + focusedRect = null; + } + if (nextFocus.requestFocus(direction, focusedRect)) { return true; } } @@ -2556,8 +2561,10 @@ public class ListView extends AbsListView { if (mItemsCanFocus && (focusResult == null) && selectedView != null && selectedView.hasFocus()) { final View focused = selectedView.findFocus(); - if (!isViewAncestorOf(focused, this) || distanceToView(focused) > 0) { - focused.clearFocus(); + if (focused != null) { + if (!isViewAncestorOf(focused, this) || distanceToView(focused) > 0) { + focused.clearFocus(); + } } } |