package by.istin.android.xcore.fragment; import android.app.Activity; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.LoaderManager; import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.content.Loader; import by.istin.android.xcore.model.CursorModel; import by.istin.android.xcore.model.CursorModelLoader; import by.istin.android.xcore.utils.Log; public class CursorLoaderFragmentHelper { public static interface ICursorLoaderFragmentHelper extends LoaderCallbacks<Cursor> { Uri getUri(); int getLoaderId(); Activity getActivity(); String[] getProjection(); String[] getSelectionArgs(); String getOrder(); String getSelection(); void showProgress(); void hideProgress(); CursorModel.CursorModelCreator getCursorModelCreator(); } public static Loader<Cursor> onCreateLoader(final ICursorLoaderFragmentHelper cursorLoaderFragment, int id, Bundle args) { return onCreateLoader(cursorLoaderFragment, null, id, args); } public static Loader<Cursor> onCreateLoader(final ICursorLoaderFragmentHelper cursorLoaderFragment, CursorModelLoader.ILoading loading, int id, Bundle args) { Loader<Cursor> loader = null; if (id == cursorLoaderFragment.getLoaderId()) { loader = new CursorModelLoader( cursorLoaderFragment.getActivity(), cursorLoaderFragment.getCursorModelCreator(), loading, cursorLoaderFragment.getUri(), cursorLoaderFragment.getProjection(), cursorLoaderFragment.getSelection(), cursorLoaderFragment.getSelectionArgs(), cursorLoaderFragment.getOrder()); } return loader; } public static boolean onActivityCreated(ICursorLoaderFragmentHelper cursorLoaderFragment, Bundle savedInstanceState) { Activity activity = cursorLoaderFragment.getActivity(); if (activity instanceof FragmentActivity) { if (cursorLoaderFragment.getUri() != null) { LoaderManager lm; if (cursorLoaderFragment instanceof Fragment) { lm = ((Fragment) cursorLoaderFragment).getLoaderManager(); } else { lm = ((FragmentActivity) activity).getSupportLoaderManager(); } Log.xd("lm", lm); lm.restartLoader(cursorLoaderFragment.getLoaderId(), null, cursorLoaderFragment); return true; } } return false; } }