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 .

  • ¿Cuál sería un método para crear un contador de números en Android?
  • Android-listo JAIN-SIP biblioteca?
  • Clave de Google Maps en AndroidManifest.xml de google-services.json
  • Java / Android: clases locales anónimas vs clases nombradas
  • No se muestran filas de tabla añadidas dinámicamente
  • Android El registro y reproducción de audio está dañado
  • ANDROID: ¿Cómo obtener acceso root en una aplicación de Android?
  • Android Studio: comprueba si hay un tipo de compilación personalizado
  • Intentservice no hay constructor vacío, pero hay un constructor
  • OpenCV color-valor de un píxel usando mat.get () devuelve a veces null
  • Objeto no bloqueado por subproceso antes de notificar () en onPostExecute
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.