From fc9a8e6260e086b2208eb2468c586ee83cffd3d3 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Tue, 6 Jul 2010 13:35:17 -0700 Subject: [PATCH] Update to use new LoaderManager API. Change-Id: I76c7e7210979742e4ab2140ee68fcaf2207505e5 --- samples/ApiDemos/AndroidManifest.xml | 2 + .../android/apis/app/FragmentComplexList.java | 77 ++++++------------- .../android/apis/app/FragmentList.java | 4 +- .../apis/app/FragmentRetainInstance.java | 4 +- 4 files changed, 28 insertions(+), 59 deletions(-) diff --git a/samples/ApiDemos/AndroidManifest.xml b/samples/ApiDemos/AndroidManifest.xml index 80fa62bb1..b191a9fb2 100644 --- a/samples/ApiDemos/AndroidManifest.xml +++ b/samples/ApiDemos/AndroidManifest.xml @@ -34,9 +34,11 @@ + { - ExampleComplexListFragment mListFragment; - - void setListFragment(ExampleComplexListFragment fragment) { - mListFragment = fragment; - } - - @Override - protected Loader onCreateLoader(int id, Bundle args) { - return new CursorLoader(getActivity(), Phones.CONTENT_URI, null, null, null, null); - } - - @Override - protected void onInitializeLoaders() { - } - - @Override - protected void onLoadFinished(Loader loader, Cursor data) { - mListFragment.loadFinished(loader, data); - } - } - - public static class ExampleComplexListFragment extends ListFragment { - ContactsLoader mLoader; + public static class ExampleComplexListFragment extends ListFragment + implements LoaderManager.LoaderCallbacks { boolean mInitializing; @Override @@ -83,21 +55,11 @@ public class FragmentComplexList extends Activity { super.onCreate(savedInstanceState); mInitializing = true; - - // Make sure we have the loader for our content. - mLoader = (ContactsLoader)getActivity().findFragmentByTag( - ContactsLoader.class.getName()); - if (mLoader == null) { - mLoader = new ContactsLoader(); - getActivity().openFragmentTransaction().add(mLoader, - ContactsLoader.class.getName()).commit(); - } - mLoader.setListFragment(this); } @Override - public void onReady(Bundle savedInstanceState) { - super.onReady(savedInstanceState); + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); // Assume we don't yet have data to display. setListShown(false, false); @@ -107,10 +69,10 @@ public class FragmentComplexList extends Activity { setEmptyText("No phone numbers"); // Check if we already have content for the list. - Loader ld = mLoader.getLoader(0); + Loader ld = getLoaderManager().getLoader(0); if (ld == null) { // No loader started yet... do it now. - ld = mLoader.startLoading(0, null); + ld = getLoaderManager().startLoading(0, null, this); } else { // Already have a loader -- poke it to report its cursor // if it already has one. This will immediately call back @@ -120,15 +82,6 @@ public class FragmentComplexList extends Activity { mInitializing = false; } - void loadFinished(Loader loader, Cursor data) { - ListAdapter adapter = new SimpleCursorAdapter(getActivity(), - android.R.layout.simple_list_item_2, data, - new String[] { Phones.NAME, Phones.NUMBER }, - new int[] { android.R.id.text1, android.R.id.text2 }); - setListAdapter(adapter); - setListShown(true, !mInitializing); - } - @Override public void onListItemClick(ListView l, View v, int position, long id) { Log.i("FragmentComplexList", "Item clicked: " + id); @@ -136,8 +89,22 @@ public class FragmentComplexList extends Activity { @Override public void onDestroy() { - mLoader.setListFragment(this); super.onDestroy(); } + + @Override + public Loader onCreateLoader(int id, Bundle args) { + return new CursorLoader(getActivity(), Phones.CONTENT_URI, null, null, null, null); + } + + @Override + public void onLoadFinished(Loader loader, Cursor data) { + ListAdapter adapter = new SimpleCursorAdapter(getActivity(), + android.R.layout.simple_list_item_2, data, + new String[] { Phones.NAME, Phones.NUMBER }, + new int[] { android.R.id.text1, android.R.id.text2 }); + setListAdapter(adapter); + setListShown(true, !mInitializing); + } } } diff --git a/samples/ApiDemos/src/com/example/android/apis/app/FragmentList.java b/samples/ApiDemos/src/com/example/android/apis/app/FragmentList.java index a636f449b..1ac8890cf 100644 --- a/samples/ApiDemos/src/com/example/android/apis/app/FragmentList.java +++ b/samples/ApiDemos/src/com/example/android/apis/app/FragmentList.java @@ -43,8 +43,8 @@ public class FragmentList extends Activity { public static class ExampleListFragment extends ListFragment { @Override - public void onReady(Bundle savedInstanceState) { - super.onReady(savedInstanceState); + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); setListAdapter(new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, Shakespeare.TITLES)); } diff --git a/samples/ApiDemos/src/com/example/android/apis/app/FragmentRetainInstance.java b/samples/ApiDemos/src/com/example/android/apis/app/FragmentRetainInstance.java index 66794cf32..070eb4735 100644 --- a/samples/ApiDemos/src/com/example/android/apis/app/FragmentRetainInstance.java +++ b/samples/ApiDemos/src/com/example/android/apis/app/FragmentRetainInstance.java @@ -143,8 +143,8 @@ public class FragmentRetainInstance extends Activity { * to a new activity. */ @Override - public void onReady(Bundle savedInstanceState) { - super.onReady(savedInstanceState); + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); // Retrieve the progress bar from the current activity. mProgressBar = (ProgressBar)getActivity().findViewById(