package com.robotoworks.example.recipes; import com.robotoworks.example.recipes.content.RecipesDBContract.Recipes; import com.robotoworks.mechanoid.db.SQuery; import android.content.Context; import android.database.Cursor; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.support.v4.app.LoaderManager; import android.support.v4.content.Loader; import android.support.v4.widget.SimpleCursorAdapter; public class RecipeListFragment extends ListFragment { private RecipesCursorAdapter mAdapter; @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mAdapter = new RecipesCursorAdapter(getActivity()); setListAdapter(mAdapter); getLoaderManager().initLoader(0, null, mLoaderCallbacks); } class RecipesCursorAdapter extends SimpleCursorAdapter { public RecipesCursorAdapter(Context context) { super(context, R.layout.item_recipe, null, new String[] { Recipes.TITLE, Recipes.DESCRIPTION }, new int[] { R.id.title, R.id.description }, 0); } } LoaderManager.LoaderCallbacks<Cursor> mLoaderCallbacks = new LoaderManager.LoaderCallbacks<Cursor>() { @Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { return SQuery.newQuery().createSupportLoader( Recipes.CONTENT_URI, new String[] { Recipes._ID, Recipes.TITLE, Recipes.DESCRIPTION }); } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { mAdapter.swapCursor(cursor); } @Override public void onLoaderReset(Loader<Cursor> loader) { mAdapter.swapCursor(null); } }; }