SimpleCursorAdapterpublic class SimpleCursorAdapter extends ResourceCursorAdapter Static library support version of the framework's {@link android.widget.SimpleCursorAdapter}.
Used to write apps that run on platforms prior to Android 3.0. When running
on Android 3.0 or above, this implementation is still used; it does not try
to switch to the framework's implementation. See the framework SDK
documentation for a class overview. |
Fields Summary |
---|
protected int[] | mFromA list of columns containing the data to bind to the UI.
This field should be made private, so it is hidden from the SDK.
{@hide} | protected int[] | mToA list of View ids representing the views to which the data must be bound.
This field should be made private, so it is hidden from the SDK.
{@hide} | private int | mStringConversionColumn | private CursorToStringConverter | mCursorToStringConverter | private ViewBinder | mViewBinder | String[] | mOriginalFrom |
Constructors Summary |
---|
public SimpleCursorAdapter(android.content.Context context, int layout, android.database.Cursor c, String[] from, int[] to)Constructor the enables auto-requery.
super(context, layout, c);
mTo = to;
mOriginalFrom = from;
findColumns(from);
| public SimpleCursorAdapter(android.content.Context context, int layout, android.database.Cursor c, String[] from, int[] to, int flags)Standard constructor.
super(context, layout, c, flags);
mTo = to;
mOriginalFrom = from;
findColumns(from);
|
Methods Summary |
---|
public void | bindView(android.view.View view, android.content.Context context, android.database.Cursor cursor)Binds all of the field names passed into the "to" parameter of the
constructor with their corresponding cursor columns as specified in the
"from" parameter.
Binding occurs in two phases. First, if a
{@link android.widget.SimpleCursorAdapter.ViewBinder} is available,
{@link ViewBinder#setViewValue(android.view.View, android.database.Cursor, int)}
is invoked. If the returned value is true, binding has occured. If the
returned value is false and the view to bind is a TextView,
{@link #setViewText(TextView, String)} is invoked. If the returned value is
false and the view to bind is an ImageView,
{@link #setViewImage(ImageView, String)} is invoked. If no appropriate
binding can be found, an {@link IllegalStateException} is thrown.
final ViewBinder binder = mViewBinder;
final int count = mTo.length;
final int[] from = mFrom;
final int[] to = mTo;
for (int i = 0; i < count; i++) {
final View v = view.findViewById(to[i]);
if (v != null) {
boolean bound = false;
if (binder != null) {
bound = binder.setViewValue(v, cursor, from[i]);
}
if (!bound) {
String text = cursor.getString(from[i]);
if (text == null) {
text = "";
}
if (v instanceof TextView) {
setViewText((TextView) v, text);
} else if (v instanceof ImageView) {
setViewImage((ImageView) v, text);
} else {
throw new IllegalStateException(v.getClass().getName() + " is not a " +
" view that can be bounds by this SimpleCursorAdapter");
}
}
}
}
| public void | changeCursorAndColumns(android.database.Cursor c, java.lang.String[] from, int[] to)Change the cursor and change the column-to-view mappings at the same time.
mOriginalFrom = from;
mTo = to;
super.changeCursor(c);
findColumns(mOriginalFrom);
| public java.lang.CharSequence | convertToString(android.database.Cursor cursor)Returns a CharSequence representation of the specified Cursor as defined
by the current CursorToStringConverter. If no CursorToStringConverter
has been set, the String conversion column is used instead. If the
conversion column is -1, the returned String is empty if the cursor
is null or Cursor.toString().
if (mCursorToStringConverter != null) {
return mCursorToStringConverter.convertToString(cursor);
} else if (mStringConversionColumn > -1) {
return cursor.getString(mStringConversionColumn);
}
return super.convertToString(cursor);
| private void | findColumns(java.lang.String[] from)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.
if (mCursor != 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]);
}
} else {
mFrom = null;
}
| public android.support.v4.widget.SimpleCursorAdapter$CursorToStringConverter | getCursorToStringConverter()Returns the converter used to convert the filtering Cursor
into a String.
return mCursorToStringConverter;
| public int | getStringConversionColumn()Return the index of the column used to get a String representation
of the Cursor.
return mStringConversionColumn;
| public android.support.v4.widget.SimpleCursorAdapter$ViewBinder | getViewBinder()Returns the {@link ViewBinder} used to bind data to views.
return mViewBinder;
| public void | setCursorToStringConverter(android.support.v4.widget.SimpleCursorAdapter$CursorToStringConverter cursorToStringConverter)Sets the converter used to convert the filtering Cursor
into a String.
mCursorToStringConverter = cursorToStringConverter;
| public void | setStringConversionColumn(int stringConversionColumn)Defines the index of the column in the Cursor used to get a String
representation of that Cursor. The column is used to convert the
Cursor to a String only when the current CursorToStringConverter
is null.
mStringConversionColumn = stringConversionColumn;
| public void | setViewBinder(android.support.v4.widget.SimpleCursorAdapter$ViewBinder viewBinder)Sets the binder used to bind data to views.
mViewBinder = viewBinder;
| public void | setViewImage(android.widget.ImageView v, java.lang.String value)Called by bindView() to set the image for an ImageView but only if
there is no existing ViewBinder or if the existing ViewBinder cannot
handle binding to an ImageView.
By default, the value will be treated as an image resource. If the
value cannot be used as an image resource, the value is used as an
image Uri.
Intended to be overridden by Adapters that need to filter strings
retrieved from the database.
try {
v.setImageResource(Integer.parseInt(value));
} catch (NumberFormatException nfe) {
v.setImageURI(Uri.parse(value));
}
| public void | setViewText(android.widget.TextView v, java.lang.String text)Called by bindView() to set the text for a TextView but only if
there is no existing ViewBinder or if the existing ViewBinder cannot
handle binding to an TextView.
Intended to be overridden by Adapters that need to filter strings
retrieved from the database.
v.setText(text);
| public android.database.Cursor | swapCursor(android.database.Cursor c)
Cursor res = super.swapCursor(c);
// rescan columns in case cursor layout is different
findColumns(mOriginalFrom);
return res;
|
|