LoaderManager con múltiples cargadores: cómo obtener el cursor correcto

Para mí no está claro cómo obtener el cursor derecho si tiene varios cargadores. Digamos que defina dos cargadores diferentes con:

getLoaderManager().initLoader(0,null,this); getLoaderManager().initLoader(1,null,this); 

Entonces en onCreateLoader () haces diferentes cosas dependiendo del id:

 @Override public Loader<Cursor> onCreateLoader(int id, Bundle arg1) { if (id==0){ CursorLoader loader = new CursorLoader(getActivity(), MaterialContentProvider.CONTENT_URI,null,null,null,null); }else{ CursorLoader loader = new CursorLoader(getActivity(), CustomerContentProvider.CONTENT_URI,null,null,null,null); }; return loader; } 

Hasta aquí todo bien. Pero cómo conseguir el cursor derecho en onLoadFinished () porque no obtienes ningún id para identificar el Cursor correcto para el Cursoradapter correcto.

 @Override public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor) { mycursoradapter1.swapCursor(cursor); if(isResumed()){ setListShown(true); }else { setListShownNoAnimation(true); } } //and where to get the cursor for mycursoradapter2 

O estoy equivocado y esta es la manera incorrecta de obtener resultados para dos cursoradapter diferentes en un fragmento.

La clase Loader tiene un método llamado getId () . Espero que esto devuelva el identificador que ha asociado con el cargador.

Utilice el método getId () de Loader:

 @Override public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { switch (loader.getId()) { case 0: // do some stuff here break; case 1: // do some other stuff here break; case 2: // do some more stuff here break; default: break; } } 

Si sus cargadores no tienen nada en común sino el tipo de clase del resultado (aquí: Cursor ), es mejor crear dos instancias LoaderCallbacks distintas (simplemente como dos clases internas en su Actividad / Fragmento), cada una dedicada a un solo tratamiento , En lugar de tratar de mezclar las manzanas con las naranjas.

En su caso, parece que tanto el origen de datos como el tratamiento de resultados son diferentes, lo que requiere que escriba el código extra para identificar el escenario actual y enviarlo al bloque de código apropiado.

  • ¿Por qué onLoadFinished se llama de nuevo después de que se reanude el fragmento?
  • Android TabsAdapter con ActionbarSherlock
  • Error: java.lang.NullPointerException en android.support.v4.content.Loader
  • Loader y LoaderManager - ¿Cómo determinar si un cargador actual está activo y en ejecución?
  • Múltiples cargadores con LoaderManager, no consiguiendo derecho Cargador
  • Refrescar una vista dentro de un fragmento
  • ¿Por qué nunca se llama a mi OnLocationChanged ()?
  • Matrixcursor con proveedor de contenido no-db
  • ¿Qué hace LoaderManager?
  • Utilizar CursorLoader para consultar la base de datos SQLite y rellenar AutoCompleteTextView
  • Inicialización de un cargador en una actividad
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.