19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.widget; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.Cursor; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.net.Uri; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.View; 23e5b7632e5b3509beb7d0729a9640741d7f4ca466Romain Guy 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * An easy adapter to map columns from a cursor to TextViews or ImageViews 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * defined in an XML file. You can specify which columns you want, which 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * views you want to display the columns, and the XML file that defines 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the appearance of these views. 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Binding occurs in two phases. First, if a 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.widget.SimpleCursorAdapter.ViewBinder} is available, 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link ViewBinder#setViewValue(android.view.View, android.database.Cursor, int)} 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is invoked. If the returned value is true, binding has occured. If the 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * returned value is false and the view to bind is a TextView, 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #setViewText(TextView, String)} is invoked. If the returned value 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is false and the view to bind is an ImageView, 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #setViewImage(ImageView, String)} is invoked. If no appropriate 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * binding can be found, an {@link IllegalStateException} is thrown. 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If this adapter is used with filtering, for instance in an 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.widget.AutoCompleteTextView}, you can use the 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.widget.SimpleCursorAdapter.CursorToStringConverter} and the 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.widget.FilterQueryProvider} interfaces 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to get control over the filtering process. You can refer to 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #convertToString(android.database.Cursor)} and 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #runQueryOnBackgroundThread(CharSequence)} for more information. 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class SimpleCursorAdapter extends ResourceCursorAdapter { 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A list of columns containing the data to bind to the UI. 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This field should be made private, so it is hidden from the SDK. 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide} 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected int[] mFrom; 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A list of View ids representing the views to which the data must be bound. 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This field should be made private, so it is hidden from the SDK. 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide} 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected int[] mTo; 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mStringConversionColumn = -1; 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private CursorToStringConverter mCursorToStringConverter; 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private ViewBinder mViewBinder; 6530346c4399af45b46996f504004796177b975349Romain Guy 6630346c4399af45b46996f504004796177b975349Romain Guy String[] mOriginalFrom; 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 69c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn * Constructor the enables auto-requery. 70c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn * 71c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn * @deprecated This option is discouraged, as it results in Cursor queries 72c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn * being performed on the application's UI thread and thus can cause poor 73c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn * responsiveness or even Application Not Responding errors. As an alternative, 74c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn * use {@link android.app.LoaderManager} with a {@link android.content.CursorLoader}. 75c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn */ 76c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn @Deprecated 77c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn public SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) { 78c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn super(context, layout, c); 79c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn mTo = to; 80c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn mOriginalFrom = from; 8187ab6962e44914fdee767c5be6b316228d2b7889Hung-ying Tyan findColumns(c, from); 82c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn } 83c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn 84c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn /** 85c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn * Standard constructor. 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param context The context where the ListView associated with this 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * SimpleListItemFactory is running 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param layout resource identifier of a layout file that defines the views 90efdb6f978c12b768b4cfe9855c8d11dac59dd081Trevor Johns * for this list item. The layout file should include at least 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * those named views defined in "to" 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param c The database cursor. Can be null if the cursor is not available yet. 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param from A list of column names representing the data to bind to the UI. Can be null 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if the cursor is not available yet. 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param to The views that should display column in the "from" parameter. 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * These should all be TextViews. The first N views in this list 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * are given the values of the first N columns in the from 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * parameter. Can be null if the cursor is not available yet. 99c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn * @param flags Flags used to determine the behavior of the adapter, 100c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn * as per {@link CursorAdapter#CursorAdapter(Context, Cursor, int)}. 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 102c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn public SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, 103c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn int[] to, int flags) { 104c91893511dc1b9e634648406c9ae61b15476e65dDianne Hackborn super(context, layout, c, flags); 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTo = to; 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOriginalFrom = from; 10787ab6962e44914fdee767c5be6b316228d2b7889Hung-ying Tyan findColumns(c, from); 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Binds all of the field names passed into the "to" parameter of the 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * constructor with their corresponding cursor columns as specified in the 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * "from" parameter. 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Binding occurs in two phases. First, if a 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.widget.SimpleCursorAdapter.ViewBinder} is available, 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link ViewBinder#setViewValue(android.view.View, android.database.Cursor, int)} 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is invoked. If the returned value is true, binding has occured. If the 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * returned value is false and the view to bind is a TextView, 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #setViewText(TextView, String)} is invoked. If the returned value is 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * false and the view to bind is an ImageView, 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #setViewImage(ImageView, String)} is invoked. If no appropriate 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * binding can be found, an {@link IllegalStateException} is thrown. 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws IllegalStateException if binding cannot occur 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.widget.CursorAdapter#bindView(android.view.View, 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * android.content.Context, android.database.Cursor) 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getViewBinder() 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setViewBinder(android.widget.SimpleCursorAdapter.ViewBinder) 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setViewImage(ImageView, String) 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setViewText(TextView, String) 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void bindView(View view, Context context, Cursor cursor) { 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final ViewBinder binder = mViewBinder; 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int count = mTo.length; 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int[] from = mFrom; 139c8ca2a3a07300349e2733e05255f01a677647f24Romain Guy final int[] to = mTo; 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0; i < count; i++) { 142c8ca2a3a07300349e2733e05255f01a677647f24Romain Guy final View v = view.findViewById(to[i]); 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (v != null) { 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean bound = false; 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (binder != null) { 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bound = binder.setViewValue(v, cursor, from[i]); 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!bound) { 1506ddfec1b193fb0ee9c55ae1f0648d6fcd66e7cd1Romain Guy String text = cursor.getString(from[i]); 1516ddfec1b193fb0ee9c55ae1f0648d6fcd66e7cd1Romain Guy if (text == null) { 1526ddfec1b193fb0ee9c55ae1f0648d6fcd66e7cd1Romain Guy text = ""; 1536ddfec1b193fb0ee9c55ae1f0648d6fcd66e7cd1Romain Guy } 1546ddfec1b193fb0ee9c55ae1f0648d6fcd66e7cd1Romain Guy 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (v instanceof TextView) { 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setViewText((TextView) v, text); 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (v instanceof ImageView) { 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setViewImage((ImageView) v, text); 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new IllegalStateException(v.getClass().getName() + " is not a " + 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " view that can be bounds by this SimpleCursorAdapter"); 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the {@link ViewBinder} used to bind data to views. 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a ViewBinder or null if the binder does not exist 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #bindView(android.view.View, android.content.Context, android.database.Cursor) 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setViewBinder(android.widget.SimpleCursorAdapter.ViewBinder) 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ViewBinder getViewBinder() { 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mViewBinder; 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the binder used to bind data to views. 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param viewBinder the binder used to bind data to views, can be null to 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * remove the existing binder 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #bindView(android.view.View, android.content.Context, android.database.Cursor) 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getViewBinder() 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setViewBinder(ViewBinder viewBinder) { 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mViewBinder = viewBinder; 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Called by bindView() to set the image for an ImageView but only if 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * there is no existing ViewBinder or if the existing ViewBinder cannot 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * handle binding to an ImageView. 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * By default, the value will be treated as an image resource. If the 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value cannot be used as an image resource, the value is used as an 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * image Uri. 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Intended to be overridden by Adapters that need to filter strings 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * retrieved from the database. 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v ImageView to receive an image 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value the value retrieved from the cursor 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setViewImage(ImageView v, String value) { 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project v.setImageResource(Integer.parseInt(value)); 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (NumberFormatException nfe) { 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project v.setImageURI(Uri.parse(value)); 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Called by bindView() to set the text for a TextView but only if 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * there is no existing ViewBinder or if the existing ViewBinder cannot 219f76a50ce8fdc6aea22cabc77b2977a1a15a79630Ken Wakasa * handle binding to a TextView. 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Intended to be overridden by Adapters that need to filter strings 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * retrieved from the database. 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v TextView to receive text 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text the text to be set for the TextView 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setViewText(TextView v, String text) { 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project v.setText(text); 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return the index of the column used to get a String representation 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of the Cursor. 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a valid index in the current Cursor or -1 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.widget.CursorAdapter#convertToString(android.database.Cursor) 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setStringConversionColumn(int) 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter) 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getCursorToStringConverter() 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getStringConversionColumn() { 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mStringConversionColumn; 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Defines the index of the column in the Cursor used to get a String 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * representation of that Cursor. The column is used to convert the 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Cursor to a String only when the current CursorToStringConverter 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is null. 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param stringConversionColumn a valid index in the current Cursor or -1 to use the default 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * conversion mechanism 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.widget.CursorAdapter#convertToString(android.database.Cursor) 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getStringConversionColumn() 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter) 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getCursorToStringConverter() 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setStringConversionColumn(int stringConversionColumn) { 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mStringConversionColumn = stringConversionColumn; 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the converter used to convert the filtering Cursor 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * into a String. 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return null if the converter does not exist or an instance of 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.widget.SimpleCursorAdapter.CursorToStringConverter} 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter) 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getStringConversionColumn() 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setStringConversionColumn(int) 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.widget.CursorAdapter#convertToString(android.database.Cursor) 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public CursorToStringConverter getCursorToStringConverter() { 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mCursorToStringConverter; 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the converter used to convert the filtering Cursor 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * into a String. 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param cursorToStringConverter the Cursor to String converter, or 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * null to remove the converter 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter) 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getStringConversionColumn() 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setStringConversionColumn(int) 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.widget.CursorAdapter#convertToString(android.database.Cursor) 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setCursorToStringConverter(CursorToStringConverter cursorToStringConverter) { 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mCursorToStringConverter = cursorToStringConverter; 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns a CharSequence representation of the specified Cursor as defined 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * by the current CursorToStringConverter. If no CursorToStringConverter 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * has been set, the String conversion column is used instead. If the 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * conversion column is -1, the returned String is empty if the cursor 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is null or Cursor.toString(). 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param cursor the Cursor to convert to a CharSequence 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a non-null CharSequence representing the cursor 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public CharSequence convertToString(Cursor cursor) { 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mCursorToStringConverter != null) { 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mCursorToStringConverter.convertToString(cursor); 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (mStringConversionColumn > -1) { 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return cursor.getString(mStringConversionColumn); 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return super.convertToString(cursor); 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 31987ab6962e44914fdee767c5be6b316228d2b7889Hung-ying Tyan * Create a map from an array of strings to an array of column-id integers in cursor c. 32087ab6962e44914fdee767c5be6b316228d2b7889Hung-ying Tyan * If c is null, the array will be discarded. 32187ab6962e44914fdee767c5be6b316228d2b7889Hung-ying Tyan * 32287ab6962e44914fdee767c5be6b316228d2b7889Hung-ying Tyan * @param c the cursor to find the columns from 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param from the Strings naming the columns of interest 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 32587ab6962e44914fdee767c5be6b316228d2b7889Hung-ying Tyan private void findColumns(Cursor c, String[] from) { 32687ab6962e44914fdee767c5be6b316228d2b7889Hung-ying Tyan if (c != null) { 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int i; 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int count = from.length; 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mFrom == null || mFrom.length != count) { 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mFrom = new int[count]; 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (i = 0; i < count; i++) { 33387ab6962e44914fdee767c5be6b316228d2b7889Hung-ying Tyan mFrom[i] = c.getColumnIndexOrThrow(from[i]); 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mFrom = null; 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 3410e3b8f421dfcc5363f234eb1b76479cb2fb2e8eeDianne Hackborn public Cursor swapCursor(Cursor c) { 34251d6eb7dcfb776cb70a337ba4fd1eaadc94d8688Romain Guy // super.swapCursor() will notify observers before we have 34351d6eb7dcfb776cb70a337ba4fd1eaadc94d8688Romain Guy // a valid mapping, make sure we have a mapping before this 34451d6eb7dcfb776cb70a337ba4fd1eaadc94d8688Romain Guy // happens 34587ab6962e44914fdee767c5be6b316228d2b7889Hung-ying Tyan findColumns(c, mOriginalFrom); 34687ab6962e44914fdee767c5be6b316228d2b7889Hung-ying Tyan return super.swapCursor(c); 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Change the cursor and change the column-to-view mappings at the same time. 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param c The database cursor. Can be null if the cursor is not available yet. 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param from A list of column names representing the data to bind to the UI. Can be null 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if the cursor is not available yet. 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param to The views that should display column in the "from" parameter. 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * These should all be TextViews. The first N views in this list 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * are given the values of the first N columns in the from 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * parameter. Can be null if the cursor is not available yet. 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void changeCursorAndColumns(Cursor c, String[] from, int[] to) { 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOriginalFrom = from; 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTo = to; 36351d6eb7dcfb776cb70a337ba4fd1eaadc94d8688Romain Guy // super.changeCursor() will notify observers before we have 36451d6eb7dcfb776cb70a337ba4fd1eaadc94d8688Romain Guy // a valid mapping, make sure we have a mapping before this 36551d6eb7dcfb776cb70a337ba4fd1eaadc94d8688Romain Guy // happens 36687ab6962e44914fdee767c5be6b316228d2b7889Hung-ying Tyan findColumns(c, mOriginalFrom); 36751d6eb7dcfb776cb70a337ba4fd1eaadc94d8688Romain Guy super.changeCursor(c); 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This class can be used by external clients of SimpleCursorAdapter 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to bind values fom the Cursor to views. 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You should use this class to bind values from the Cursor to views 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * that are not directly supported by SimpleCursorAdapter or to 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * change the way binding occurs for views supported by 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * SimpleCursorAdapter. 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see SimpleCursorAdapter#bindView(android.view.View, android.content.Context, android.database.Cursor) 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see SimpleCursorAdapter#setViewImage(ImageView, String) 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see SimpleCursorAdapter#setViewText(TextView, String) 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static interface ViewBinder { 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Binds the Cursor column defined by the specified index to the specified view. 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * When binding is handled by this ViewBinder, this method must return true. 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If this method returns false, SimpleCursorAdapter will attempts to handle 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the binding on its own. 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param view the view to bind the data to 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param cursor the cursor to get the data from 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param columnIndex the column at which the data can be found in the cursor 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true if the data was bound to the view, false otherwise 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean setViewValue(View view, Cursor cursor, int columnIndex); 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This class can be used by external clients of SimpleCursorAdapter 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to define how the Cursor should be converted to a String. 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.widget.CursorAdapter#convertToString(android.database.Cursor) 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static interface CursorToStringConverter { 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns a CharSequence representing the specified Cursor. 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param cursor the cursor for which a CharSequence representation 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is requested 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a non-null CharSequence representing the cursor 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CharSequence convertToString(Cursor cursor); 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 419