android - CursorAdapter getCount 0 on back press

标签 android

我正在从 cursorLoader 加载一个 cursoradpater。当我第一次打开 fragment 时,它按预期工作。但是,当我转到另一个具有相同加载器 ID 的 fragment 并返回 Adapter.getCursor().getCount() 返回 1 时,Adapter.getCount() 返回 0。我将 getCount 方法追踪到

public int getCount() {
    if (mDataValid && mCursor != null) {
        return mCursor.getCount();
    } else {
        return 0;
    }
}

问题是 mDataValid 是假的;当我尝试重新启动加载程序时,它仍然认为它无效。我怎样才能使我的适配器有效?

最佳答案

您发布了少量代码,但我会尽力帮助您。每次数据集无效(或 mDataValid 为假)时,您都需要调用 changeCursor()。这基本上意味着数据库已更改,适配器需要重建其缓存数据。

我假设您的适配器中有一个 DataSetObserver?如果是这样,只需在 onInvalidated() 方法中调用 changeCursor。如果您没有,请发表评论,我会帮助您将一个添加到您的适配器中。

关于android - CursorAdapter getCount 0 on back press,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26659532/

相关文章:

Android sqlite 查询与 AND

android - Cloudinary:如何以签名方式将图像上传到 Android 中的 cloudinary

java - 如何从Android中的文件夹中删除具有特定扩展名的文件

android - Android SQLiteDatabase 线程安全吗?

android - 根据时间的昼夜主题

android - iText 库 - 不显示西里尔文(俄语)符号

android - 从字符串中获取布局 ID,将不起作用

android - BViewBinding 的缺失或冲突依赖项的模块类路径

android - 负数输入(EditText)得到无符号

android - Android XML 样式属性是否未按顺序覆盖?