Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用LoaderManager刷新ListFragment_Android_Android Listview - Fatal编程技术网

Android 使用LoaderManager刷新ListFragment

Android 使用LoaderManager刷新ListFragment,android,android-listview,Android,Android Listview,我有一个ListFragment类作为我的activity的子类,在我的PreferenceActivity中,我有一个设置来更改我拥有的5个可能列表视图中的2个的排序,但是当我带着ListView返回activity时,onCreateLoader不会再次被调用,因此列表保持不变 更改设置值后如何更新列表 myonCreateLoader的一个示例 if(pref.getString(Preferences.CAL_SORT, "1").equals("1")){

我有一个ListFragment类作为我的activity的子类,在我的
PreferenceActivity
中,我有一个设置来更改我拥有的5个可能列表视图中的2个的排序,但是当我带着ListView返回activity时,
onCreateLoader
不会再次被调用,因此列表保持不变

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

my
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(){
    }
}
public类MainActivity扩展了FragmentActivity{
公共静态类ListView扩展ListFragment实现LoaderManager.LoaderCallbacks{
公共加载器onCreateLoader(int arg0,Bundle arg1){
}
}
恢复时公开作废(){
}
}
你必须打电话。在
onCreateLoader()
中,您可以基于提供的
包创建新的
加载程序


请参见示例,了解过滤器更改时如何使用它。用于检测您可以使用的首选项更改。

好的,我有点困惑应该在哪里使用它,我想在我的活动的
onResume
中,我可以在从PreferenceActivity返回后刷新列表,但是
getLoaderManager
在我的外部
MainActivity
中不可见。该示例仅显示在类内部使用该方法,该类具有加载程序
片段
s以及
onResume()
方法。看见覆盖它并在那里调用它。