2012-08-14 36 views
2

我有一个ListFragment类作为我的活动的子类,在我的PreferenceActivity我有一个设置可以改变5个可能列表视图中的2个的排序,但是当我返回到列表视图onCreateLoader的活动不会再次被调用,因此列表保持不变。使用LoaderManager刷新ListFragment

如何在更改设置值后更新列表?

的例子我onCreateLoader

if(pref.getString(Preferences.CAL_SORT, "1").equals("1")){ 
       return new CursorLoader(getActivity(),CalendarEvents.EVENTS_URI, 
         new String[] {CalendarEvents.EVENT_ID,CalendarEvents.EVENT_READ,CalendarEvents.EVENT_SUBJECT, 
          CalendarEvents.EVENT_COMPANY_NAME,CalendarEvents.EVENT_START} 
         ,null,null,CalendarEvents.EVENT_COMPANY_NAME+" COLLATE LOCALIZED ASC," /*+ julianday("*/+CalendarEvents.EVENT_START/* + ")"*/ + " COLLATE LOCALIZED DESC"); 
      }else{ 
       return new CursorLoader(getActivity(),CalendarEvents.EVENTS_URI, 
         new String[] {CalendarEvents.EVENT_ID,CalendarEvents.EVENT_READ,CalendarEvents.EVENT_SUBJECT, 
          CalendarEvents.EVENT_COMPANY_NAME,CalendarEvents.EVENT_START} 
         ,null,null,CalendarEvents.EVENT_COMPANY_NAME+" COLLATE LOCALIZED ASC," /*+ julianday("*/+CalendarEvents.EVENT_START/* + ")"*/ + " COLLATE LOCALIZED ASC"); 
      } 

我知道我可以调用适配器上notifyDatasetChange()但适配器不是外活动可见。我应该做的事情在我的ContentProvider

这是我的课是如何构成的

public class MainActivity extends FragmentActivity { 

    public static class ListViews extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor>{ 
     public Loader<Cursor> onCreateLoader(int arg0,Bundle arg1){ 
     } 
    } 

    public void onResume(){ 
    } 
} 

回答

5

你必须调用getLoaderManager().restartLoader(int, Bundle, LoaderCallbacks)。在onCreateLoader()中,您可以根据提供的Bundle创建新的Loader

请参阅样本http://developer.android.com/reference/android/app/LoaderManager.html在过滤器更改时如何使用它。要检测首选项更改,您可以使用SharedPreferences.OnSharedPreferenceChangeListener

+0

ok我有点困惑,我应该使用这个,我想我的onresume活动我可以刷新从PreferenceActivity返回列表,但getLoaderManager'不可见我的外MainActivity '。这个例子只显示了使用类内部的加载器 – tyczj 2012-08-14 20:43:29

+0

'片段'还有'onResume()'方法。请参阅http://developer.android.com/reference/android/app/Fragment.html#onResume%28%29。覆盖它并在那里调用它。 – biegleux 2012-08-14 20:47:39

+0

啊啊得到它谢谢! – tyczj 2012-08-14 20:51:48

相关问题