2012-08-14 34 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

相關問題