summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorHung-ying Tyan <tyanh@google.com>2012-06-20 17:56:40 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-06-20 17:56:40 -0700
commit927c7fd1fec8ff26fd4bf8cc64eb12dd634cb60b (patch)
tree8205c1f3c1273f64fd5ba058f1723c0c4961feaa /core
parentdce5af632ce8899905fbf187b9505f6753d5a562 (diff)
parent87ab6962e44914fdee767c5be6b316228d2b7889 (diff)
downloadframeworks_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
Diffstat (limited to 'core')
-rw-r--r--core/java/android/widget/SimpleCursorAdapter.java31
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);
}
/**