diff options
author | Hung-ying Tyan <tyanh@google.com> | 2012-06-20 17:56:40 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-06-20 17:56:40 -0700 |
commit | 927c7fd1fec8ff26fd4bf8cc64eb12dd634cb60b (patch) | |
tree | 8205c1f3c1273f64fd5ba058f1723c0c4961feaa | |
parent | dce5af632ce8899905fbf187b9505f6753d5a562 (diff) | |
parent | 87ab6962e44914fdee767c5be6b316228d2b7889 (diff) | |
download | frameworks_base-927c7fd1fec8ff26fd4bf8cc64eb12dd634cb60b.zip frameworks_base-927c7fd1fec8ff26fd4bf8cc64eb12dd634cb60b.tar.gz frameworks_base-927c7fd1fec8ff26fd4bf8cc64eb12dd634cb60b.tar.bz2 |
Merge "Fix crash when SimpleCursorAdapter changes cursor from null" into jb-dev
-rw-r--r-- | core/java/android/widget/SimpleCursorAdapter.java | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/core/java/android/widget/SimpleCursorAdapter.java b/core/java/android/widget/SimpleCursorAdapter.java index f74a314..3dd0a95 100644 --- a/core/java/android/widget/SimpleCursorAdapter.java +++ b/core/java/android/widget/SimpleCursorAdapter.java @@ -78,7 +78,7 @@ public class SimpleCursorAdapter extends ResourceCursorAdapter { super(context, layout, c); mTo = to; mOriginalFrom = from; - findColumns(from); + findColumns(c, from); } /** @@ -104,7 +104,7 @@ public class SimpleCursorAdapter extends ResourceCursorAdapter { super(context, layout, c, flags); mTo = to; mOriginalFrom = from; - findColumns(from); + findColumns(c, from); } /** @@ -316,20 +316,21 @@ public class SimpleCursorAdapter extends ResourceCursorAdapter { } /** - * Create a map from an array of strings to an array of column-id integers in mCursor. - * If mCursor is null, the array will be discarded. - * + * Create a map from an array of strings to an array of column-id integers in cursor c. + * If c is null, the array will be discarded. + * + * @param c the cursor to find the columns from * @param from the Strings naming the columns of interest */ - private void findColumns(String[] from) { - if (mCursor != null) { + private void findColumns(Cursor c, String[] from) { + if (c != null) { int i; int count = from.length; if (mFrom == null || mFrom.length != count) { mFrom = new int[count]; } for (i = 0; i < count; i++) { - mFrom[i] = mCursor.getColumnIndexOrThrow(from[i]); + mFrom[i] = c.getColumnIndexOrThrow(from[i]); } } else { mFrom = null; @@ -341,13 +342,8 @@ public class SimpleCursorAdapter extends ResourceCursorAdapter { // super.swapCursor() will notify observers before we have // a valid mapping, make sure we have a mapping before this // happens - if (mFrom == null) { - findColumns(mOriginalFrom); - } - Cursor res = super.swapCursor(c); - // rescan columns in case cursor layout is different - findColumns(mOriginalFrom); - return res; + findColumns(c, mOriginalFrom); + return super.swapCursor(c); } /** @@ -367,11 +363,8 @@ public class SimpleCursorAdapter extends ResourceCursorAdapter { // super.changeCursor() will notify observers before we have // a valid mapping, make sure we have a mapping before this // happens - if (mFrom == null) { - findColumns(mOriginalFrom); - } + findColumns(c, mOriginalFrom); super.changeCursor(c); - findColumns(mOriginalFrom); } /** |