android - 使用 LoaderManager 刷新 ListFragment

标签 android android-listview

我有一个 ListFragment 类作为我的 Activity 的子类,并且在我的 PreferenceActivity 中,我有一个设置可以更改我拥有的 5 个可能的 ListView 中的 2 个的排序,但是当我返回到具有 ListView 的 Activity onCreateLoader 不会再次被调用,因此列表保持不变。

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

我的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(),但适配器对外部 Activity 不可见。我应该在我的 ContentProvider 中做一些事情

这就是我的类(class)的结构

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(){
    }
}

最佳答案

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

查看示例 http://developer.android.com/reference/android/app/LoaderManager.html当过滤器发生变化时如何使用它。要检测首选项更改,您可以使用 SharedPreferences.OnSharedPreferenceChangeListener .

关于android - 使用 LoaderManager 刷新 ListFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11960010/

相关文章:

android - 如何将可点击按钮添加到当前可点击的 TextView

android - 输入 :checked ~ div. 子菜单 Android 浏览器 4.4.2

android - 对等通信选项

javascript - Android 键盘在验证后无法在 webview 中工作

android - Material Design 两行列表

android - 查找 Listview 项目的像素位置似乎返回错误值

android - 在 TableRow 中驯服 Android ListView 高度

android - 多个dex文件定义Lcom/google/android/gms/internal/zzau

android - 如何像 snapchat 一样获得更高的相机预览 fps?

android - 屏幕旋转后 ListFragment getListView() 返回 null