sqlite 删除最后一行刷新不起作用

2024-03-20

我的列表视图上有一个长按选项,它将删除长按的数据库条目。删除确实有效。如果我退出应用程序并返回,我会看到“无行”消息。完美的。

在我的代码中,我首先调用 DBadapter 方法来删​​除一行。然后,我在 dbadapter 中调用 fetchallnotes 方法来刷新我的列表视图。然而,在这个 fetchallnotes 调用中,最后一行不会消失。仅在我的 onCreate 中的 fetchallnotes 调用中。

这是我的上下文菜单调用,它调用我的 DBAdapter 方法

db.deleteNote(info.id);
getSnapz();

这是我在 DBAdapter 中的 deleteNote 方法

public boolean deleteNote(long rowId) {
     return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}

这是我的 getSnapz 方法,它位于我的主要活动中,这是我的列表视图所在的位置

public void getSnapz(){
    try {
        Cursor c = db.fetchAllNotes();
        //requery cursor incase the last entry has been deleted
        c.requery();
        startManagingCursor(c);
        if(c.moveToFirst()){

        String[] from = new String[]{DBAdapter.KEY_TYPE,DBAdapter.KEY_WEIGHT,DBAdapter.KEY_DATE,DBAdapter.KEY_PLACE};
        int[] to = new int[]{R.id.typecol,R.id.weightcol,R.id.datecol,R.id.placecol};

        SimpleCursorAdapter simple = new SimpleCursorAdapter(this, R.layout.snapz_row, c, from, to);
        setListAdapter(simple);
        }

    } catch (Exception e) {
        Log.e(TAG,e.toString());
    }
}

这是我在 DBAdapter 中的 fetchAllNotes 方法

public Cursor fetchAllNotes() throws Exception{
    Cursor c = db.query(DATABASE_TABLE, new String[] {KEY_ROWID,KEY_URI, KEY_DATE,KEY_TYPE,KEY_WEIGHT,
            KEY_PLACE}, 
            null, null, null, null, null );

    return c;
}

删除最后一行后,返回的游标为空。因此 c.moveToFirst() 返回 false,整个 if 块被跳过,并且列表视图保持不变,仍然显示刚刚删除的行。

当您删除几行中的一行时,它会起作用,因为只要还剩下另一行,moveToFirst() 就会返回成功。

当您退出并恢复时它会起作用,因为此时会重新创建活动并且列表视图会在未初始化的情况下启动。

解决方案:完全删除 if 语句。 SimpleCursorAdapter 应该对 0 行的游标感到满意。

从长远来看,更好的是,迁移到 ContentProvider 并使用 ContentObserver 模型来确保游标在反映数据库变化时自行更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sqlite 删除最后一行刷新不起作用 的相关文章

随机推荐

  • 任意泛型的 Typescript 映射

    我试图定义两种类型 它们应该类似于 export type IQuery
  • 如何在 SVG 中嵌入 schema.org 标记?

    我希望向 SVG 文件添加语义 并希望使用 schema org 术语 SVG 有执行此操作的语法吗 我的第一次尝试是
  • LaTeX 中的脚注间距

    我正在写论文 研究生院说我需要在多个脚注之间留一个空格 而且文本和脚注开头之间的空格太小 有没有办法做到这一点 任何帮助是极大的赞赏 footnotesep是脚注之间的空格 setlength footnotesep 0 5cm footi
  • 将一堆扩展名为“.jpg”的 PNG 图像重命名为“.png”

    所以我有一个包含数千个图像文件的文件夹 所有这些文件都保存为 jpg 问题是其中一些文件实际上是 PNG 图像文件 因此它们无法在很多程序中打开 除非我手动将其扩展名更改为 png 例如 Ubuntu 图像查看器会抛出此错误 解释 JPEG
  • 销毁并重新初始化引导滑块

    我正在使用这里找到的 Bootstrap slider https github com seiyria bootstrap slider https github com seiyria bootstrap slider目前正在使用 v1
  • .NET 通过反射获取私有属性

    我有以下场景 装配A public abstract class MyBaseEntity Uncompleted method public void addChild
  • Jquery中的Ajax代码完成后执行下一行

    需要帮忙 我正在函数内执行 ajax 调用 Ajax 调用的结果是函数的返回值 代码如下 function tabstrip ajax type POST url WebService MessageUnratedCount asmx Ge
  • 仅将分支的最后一次提交合并到 master 中

    我使用以下命令创建了一个测试存储库 mkdir test repo cd test repo git init 我在目录中创建了一个文件并提交了更改 echo 0 gt file txt git add file txt git commi
  • git log 每个文件的提交计数

    我正在尝试从中获取以下内容git log 1 存储库中每个文件的提交次数 两个日期之间 2 编辑每个文件的贡献者数量 两个日期之间 3 编辑每个文件的不同贡献者的数量 两个日期之间 我试过玩git log但我并没有那么成功 我也尝试过寻找脚
  • 带有 OR 条件的 COUNTIFS 给出#SPILL!因此

    我有以下公式 COUNTIFS MachineData N N Arlington RenewNorfolk MachineData X X Y MachineData E E lt gt rinse MachineData C C gt
  • 如何在 Objective C 中找到 HH:MM:SS 格式的两个日期之间的差异?

    我认为标题本身说明了我想做什么 不过 让我澄清一下 我现在正在开发一个应用程序 其中有两个日期 格式如下 年 月 日 时 分 SS 我需要使用它来计算格式中两个日期之间的差异 HH MM SS 我在维基上搜索并尝试了运气但没有成功 有人可以
  • 我应该使用 int 还是 Int32

    In C int and Int32是同一件事 但我读过很多次int优先于Int32没有给出任何理由 有什么原因吗 我应该关心吗 两者确实是同义词 int看起来会更熟悉一些 Int32使 32 位对于阅读代码的人来说更加明确 我会倾向于使用
  • REST 确保 JSON 模式验证不起作用

    我正在使用 Spring Boot 和 REST Assured 来测试 REST API 我正在尝试使用 JSON 模式验证的示例 但它引发了此错误 java lang IllegalArgumentException Schema to
  • 查找会计年度特定日期所属的季度

    我正在使用 java 1 7 如何查找会计年度的特定日期所属的季度 该季度可以从任何月份的 1 日 JAN DEC 开始 并且还需要该季度的开始日期和结束日期 即假设FY 2017年4月1日 2018年3月31日 那么日期2017年6月26
  • Android - 如何在新 API 中请求位置更新?

    我正在研究 google 的新位置 API 以获取纬度和经度值 private void getLastLocation FusedLocationProviderClient mFusedLocationClient LocationSe
  • 如果用户不在角色中,则忽略@Html.Action()

    In my View我渲染菜单 Html Action RenderMenu Admin and Html Action RenderMenu Manager 行动地点 Authorize Roles Admin public Action
  • 如何在自定义 .NET Web 控件中指定必需的属性?

    private string itemId Browsable true Description Required identifier for the Item public string ItemId get return itemId
  • 按位左移函数

    我正在尝试实现一个左旋转函数 将整数 x 左旋转 n 位 例如 rotateLeft 0x87654321 4 0x76543218 法律行动 gt 到目前为止我有这个 int rotateLeft int x int n return x
  • 使用 Ant 将外部 jar 文件包含在新的 jar 文件构建中

    我刚刚 继承 了一个 Java 项目 而不是来自 Java 背景 有时我会有点迷失 Eclipse 用于在开发过程中调试和运行应用程序 我通过 Eclipse 成功创建了一个 jar 文件 其中 包含 所有必需的外部 jar 如 Log4J
  • sqlite 删除最后一行刷新不起作用

    我的列表视图上有一个长按选项 它将删除长按的数据库条目 删除确实有效 如果我退出应用程序并返回 我会看到 无行 消息 完美的 在我的代码中 我首先调用 DBadapter 方法来删 除一行 然后 我在 dbadapter 中调用 fetch