You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用自定义类实现公式调用SQLite数据后ListView不显示问题

问题排查清单

1. 最直接原因:Cursor指针未复位

你从dbHelper.getdata()拿到的Cursor对象res,在第一个while循环已经遍历到了最后一行,此时res.moveToNext()直接返回false,第二个填充ListView数据的while循环根本不会执行,Adapter里没有任何数据,自然不会显示。
修复方案:第二个循环开始前调用res.moveToPosition(-1)复位指针,或者重新调用dbHelper.getdata()获取新的Cursor。

2. DBHelper存在多处逻辑错误,可能导致数据库无数据

  • updateSubtaskData方法的where条件写错:表中主键字段是subtaskname,但你写的是"name=?",所有更新操作都会失败
  • insertSubtaskData方法字段名大小写不匹配:建表时的字段是全小写的prihigh/primed/prilow/timemore/timemed/timeless,但insert时用了驼峰命名priHigh/priMed等,若SQLite开启大小写敏感会导致插入失败
  • onUpgrade方法逻辑错误:升级时删除的是不存在的Userdetails表,不会清空旧的Subtaskdata表,可能导致表结构异常

3. MyViewModel存在崩溃风险,可能导致页面提前终止

  • 成员变量timeInt没有初始化,默认值为0,计算timeConstant = totalTime / timeInt时会触发除以0崩溃
  • 若传入的list为空,调用list.get(0)会触发索引越界崩溃
  • Cursor遍历逻辑错误:每次遍历都会覆盖totalTime和timeConstant,最终返回的是最后一条数据的计算结果,不符合业务预期

4. ListView刷新逻辑缺失

  • 调用adapter.addANewSubTask添加数据后,若你的自定义SubtaskDetailAdapter的add方法没有主动调用notifyDataSetChanged(),列表不会刷新渲染
  • 第二个while循环中你第一行就把looponeran设为false,就算Cursor有数据也只会添加第一条,后续数据全部被跳过

内容的提问来源于stack exchange,提问作者Aadhitya Sachdeva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:48:02