Estoy usando la Biblioteca de compatibilidad de Android en mi proyecto. Configuré ListFragment como se describe en la DevGuide (http://developer.android.com/reference/android/app/Fragment.html) y el uso de un CursorLoader Christian simple se usó sin el proveedor de contenido (CursorLoader usage without ContentProvider).¿Mejores prácticas para consultar la base de datos SQLite en ListFragment con CursorLoader?
La pregunta es donde, en mi actividad ListFragment/parent, ¿debo abrir la base de datos, devolver el cursor, crear el adaptador y setListAdapter?
Así que en mi aplicación, tengo TítulosFragmento, DetallesFragmento, FragmentLayoutActivity, DetailsLayoutActivity.
es la mejor práctica ...
para abrir la base de datos en ListFragment de
onActivityCreated
y cerrar en ListFragment deonDestroy
como en el ejemplo de código@Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); // Open database playersDatabaseHelper = new PlayersDBAdapter(getActivity()); playersDatabaseHelper.open(); getLoaderManager().initLoader(0, null, this); ... } @Override public void onDestroy() { super.onDestroy(); if (playersDatabaseHelper != null) { playersDatabaseHelper.close(); } }
base de datos de consulta y devuelve el cursor en
onCreateLoader
, y crea el adaptador y setListAdapter enonLoadFinished
como en el ejemplo de código a continuación@Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { // Now create and return a CursorLoader that will take care of // creating a Cursor for the data being displayed. return new MyCursorLoader(getActivity()) { @Override public Cursor loadInBackground() { playersCursor = playersDatabaseHelper.getAllPlayers(); return playersCursor; } }; } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { // Create an empty adapter we will use to display the loaded data. playersAdapter = new RowAdapter(getActivity(), playersCursor, R.layout.players_overview_row); // Allocate the adapter to the List displayed within this fragment. setListAdapter(playersAdapter); playersAdapter.swapCursor(cursor); // The list should now be shown. if (isResumed()) { setListShown(true); } else { setListShownNoAnimation(true); } }
¿Estoy en el camino correcto o debo mover algunos de esos en algún lugar? ¡Gracias por tu tiempo!
¿Podría alguien comentar mi pregunta, por favor? – micadelli
¿Alguna vez recibió una respuesta? Me sorprende que tengas 14 votos y ninguna respuesta realmente. – kpierce8
Sí, nunca recibió una respuesta :( – micadelli