我正在编程的android-app将拥有一个产品数据库,比如150-250。每个项目都有名称,成本,EAN号等属性
我的第一个想法是将所有内容存储在xml文件中,该文件在应用程序启动时加载,然后填充到产品的数组/地图中。产品需要在列表视图中可见,用户应该能够通过应用程序添加更多这些产品。它们的大多数属性实际上从未改变过,但其中一些属性确实一直在变化。我不知道更改product-array和xml中的属性是否是个好主意,然后重新启动到xml-file eveytime同时更改某些内容。也许序列化会是更好的选择? 虽然无论哪种方式,我认为不需要为每次更改写入文件,我想它可以像应用程序关闭时或间隔时间那样完成(由于我还不熟悉开发,因此不太确定移动应用程序,我不希望任何数据丢失)。 也许以某种方式将他们的“静态”和“动态”属性分开是个好主意?
我在这里很迷茫。关于什么是好的方法的任何建议?
一直在搜索stackoverflow和谷歌,但实际上找不到有用的东西。
答案 0 :(得分:3)
您应该使用基于SQLite的ContentProvider
。这样,您就可以独立于任何其他组件(活动或服务)更新您的产品。所有有兴趣的人都可以在日期变更时收到通知。
此外,ListView中的ContentProviders支持(通过CursorAdapter
),您还可以获得Loaders的免费支持(通过CursorLoader
)。
除此之外,您还有一种更有效的数据存储方式(即您不需要在每次保存时重写xml文件)。 SQLite将以非常有效和强大的方式为您保存所有更改。
答案 1 :(得分:2)
您将一直访问的结构化数据在SQLite数据库而不是XML文件中处理得更好。如果您使用XML路由,则必须编写所有代码来解析,查询和存储数据。使用数据库,大多数这些函数需要更少的代码来编写,并且最有可能更有效。错误的可能性也较小。您还可以避免考虑何时将对内存中XML表示所做的更改提交到实际文件。
我强烈建议您阅读data storage上的文章,并查看Notepad Tutorial,因为它演示了创建,更新和查询数据库并将其与数据库集成所需的所有技术ListView
。
看起来似乎有很多研究,但是如果您使用内置的SQLite而不是滚动自己的XML文件支持的存储,那么您的应用程序将更加灵活且无错误。