Android LoaderManager y CursorLoader Confusión

Estoy intentando convertir mi aplicación de Android para usar LoaderManager y CursorLoader. Básicamente, tengo una base de datos SQLite que contiene una columna ADDRESS y una columna DISTANCE, y quiero cargar los valores de columna en mis filas ListView.

Ahora, he hecho un montón de investigación, y todo apunta a este tutorial: http://mobile.tutsplus.com/tutorials/android/android-sdk_content-providers/

Es un buen tutorial, pero hay un par de cosas que todavía no entiendo. Principalmente, ¿cómo puedo construir el URI de contenido que se pasa a 'nuevo CursorLoader ()'? No utilizo ningún dato externo como los contactos del dispositivo, etc.

Por favor vea mi código abajo. Estoy confundido en cuanto a cómo generar el valor para BASE_URI:

public class FavoritesFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> { SimpleCursorAdapter mAdapter; static final String[] FAVORITES_SUMMARY_PROJECTION = new String[] { MyApplication.COLUMN_ID, MyApplication.COLUMN_ADDRESS, MyApplication.COLUMN_DISTANCE, }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mAdapter = new SimpleCursorAdapter(getActivity(), R.layout.locations_list_row, null, new String[] { MyApplication.COLUMN_ADDRESS, MyApplication.COLUMN_DISTANCE }, new int[] { R.id.address2, R.id.distance }, 0); setListAdapter(mAdapter); getLoaderManager().initLoader(0, null, this); } @Override public void onListItemClick(ListView l, View v, int position, long id) { // Insert desired behavior here. } public Loader<Cursor> onCreateLoader(int id, Bundle args) { return new CursorLoader(getActivity(), ***BASE_URI***, FAVORITES_SUMMARY_PROJECTION, null, null, null); } public void onLoadFinished(Loader<Cursor> loader, Cursor data) { mAdapter.swapCursor(data); } public void onLoaderReset(Loader<Cursor> loader) { mAdapter.swapCursor(null); } } 

One Solution collect form web for “Android LoaderManager y CursorLoader Confusión”

BASE_URI debe ser un static Uri definido en su ContentProvider , que se utiliza para que cuando usted hace una consulta / update / insert / whatever para el ContentProvider , un UriMatcher que también se define en el ContentProvider puede dar salida a un Integer que le permite utilizar un Switch (como en el ejemplo del método query() en ese tutorial) para configurar la consulta correcta a la tabla correcta en su base de datos. Debe definir un BASE_URI diferente para cada tabla de la base de datos.

Si nos fijamos en ese tutorial que han definido un solo Uri en el ContentProvider :

 private static final String TUTORIALS_BASE_PATH = "tutorials"; public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + TUTORIALS_BASE_PATH); 

En su ContentProvider, debe cambiar el valor de TUTORIALS_BASE_PATH de "tutorials" a cualquiera que sea el nombre de su tabla que contenga las columnas ADDRESS y DISTANCE que mencionó. El código del constructor de CursorLoader sería así:

 return new CursorLoader(getActivity(), YourContentProvider.CONTENT_URI, FAVORITES_SUMMARY_PROJECTION, null, null, null); 

Para completar, debe cambiar los nombres de las variables para que sean más descriptivas, por lo que en lugar de TUTORIALS_BASE_PATH y CONTENT_URI , debe cambiarlo a algo como LOCATIONS_BASE_PATH y LOCATIONS_URI .

  • Dónde almacenar hashes, sales, claves en Aplicaciones de Escritorio
  • ¿Es posible iniciar una actividad de la aplicación de Android cuando se inicia el teléfono?
  • Cómo leer la base de datos de otra aplicación
  • Error en el registro de Android SIP (-9 IN_PROGRESS)
  • OnPostExecute no se llama después de la finalización AsyncTask
  • Captura de doble taps en Android
  • Restringir el reconocimiento de voz a palabras alfanuméricas
  • Convertir la lista de Java a la matriz de Javascript
  • Generar mapa <String, String> de POJO
  • Uso de AccountAuthenticator personalizado con múltiples aplicaciones
  • Android Studio Error: No se pudo crear la máquina virtual Java
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.