Je suis sur Android Bibliothèque de Compatibilité dans mon projet. J'ai mis en place ListFragment comme décrit dans la DevGuide (http://developer.android.com/reference/android/app/Fragment.html), et à l'aide d'un simple CursorLoader Christian fait être utilisé sans fournisseur de contenu (Utilisation de CursorLoader sans ContentProvider).
La question est de savoir où, dans mon ListFragment / Activité parent, dois-je ouvrir une base de données, retour du Curseur, créer de l'Adaptateur et setListAdapter?
Donc, dans mon application, j'ai TitlesFragment, DetailsFragment, FragmentLayoutActivity, DetailsLayoutActivity.
La pratique est...
-
pour ouvrir une base de données dans ListFragment de l'
onActivityCreated
et le fermer en ListFragment de l'onDestroy
comme dans l'exemple de code ci-dessous@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(); } }
-
requête de base de données et de retourner le curseur en
onCreateLoader
, et de créer la Carte et setListAdapter enonLoadFinished
comme dans l'exemple de code ci-dessous@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); } }
Suis-je sur la bonne voie ou dois-je aller de certains de ces quelque part? Merci pour votre temps!