【发布时间】:2014-06-27 21:36:29
【问题描述】:
我目前正在开发一个应用程序,它使用数据库/内容提供程序来提供从网络中提取并定期存储在本地数据库中的某些位置数据。
我已验证在应用程序中正确创建了数据库,并且通过将应用程序本地数据库的副本导出到 SD 卡以在 SQL 浏览器中查看来填充表中的数据 - 所以数据不是现在不是这里的问题。
通过我的调试过程的几个屏幕截图,奇怪的行为可能会更好地可视化:
所以,最初当我进行查询时,我的所有 Cursor 对象的行数都返回 -1,即使我验证了 SELECT * FROM TABLE_NAME 语句应该返回值,因为数据库我从设备包含行数据。下面看一下调试器步骤:
请注意,最初返回光标时,mCount 显示为 -1。
出于好奇,我添加了 cursor.moveToFirst();调用,这是该步骤之后的屏幕截图:
请注意,游标计数从 -1 变为 3,这对应于正确的行数(因为应用程序仅占 3 个大洲 atm)。不幸的是,这应该是不必要的添加行仍然不能解决我的问题,因为 CursorAdapter.bindView() 和 CursorAdapter.newView() 仍然无法使用结果光标调用。
我对可能导致此问题的原因感到困惑,以及如何解决它?如果有人可以深入了解问题可能是什么,请告诉我。此外,如果需要任何其他代码,例如 SQL 创建语句等,请告诉我 - 但是,正如我已经提到的那样,数据库创建得很好,并且在 Android 应用程序之外对导出的数据库副本执行的查询工作得很好...
最后一件事,该应用程序是为 API 级别 14+ 构建的。
【问题讨论】:
标签: android android-sqlite android-cursoradapter android-cursor android-cursorloader