Я использую библиотеку совместимости Android в своем проекте. Я установил ListFragment, как описано в DevGuide (http://developer.android.com/reference/android/app/Fragment.html), и использование простого CursorLoader Christian было использовано без поставщика контента (Использование CursorLoader без ContentProvider).
Вопрос, где в моей функции ListFragment/parent я должен открыть базу данных, вернуть курсор, создать адаптер и setListAdapter?
Итак, в моем приложении у меня есть TitlesFragment, DetailsFragment, FragmentLayoutActivity, DetailsLayoutActivity.
Является лучшей практикой...
-
чтобы открыть базу данных в ListFragment
onActivityCreated
и закройте ее в ListFragmentonDestroy
, как в примере кода ниже@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(); } }
-
запросить базу данных и вернуть курсор в
onCreateLoader
и создать адаптер и setListAdapter вonLoadFinished
, как в примере кода ниже@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); } }
Я на правильном пути или мне нужно переместить некоторые из них? Спасибо за ваше время!