在Android中存储每天数据的最佳方式?

时间:2015-10-28 05:53:11

标签: android calendar

我需要向我的应用程序的用户显示日历,每天都有一个默认率(int),当他/她选择日期时,会提供一个选项来自定义当天的比率(int)。 / p>

显示我正在使用的日历https://github.com/prolificinteractive/material-calendarview

存储每天的费率:

另一个变量存储每天的一般费率,直到用户覆盖它为止。

我感到困惑的是,存储此类数据的最佳方式是什么?我可以使用http://developer.android.com/intl/es/reference/java/util/Calendar.html吗?如果是这样,你能指点我一个教程或什么

1 个答案:

答案 0 :(得分:0)

我不知道Android,但是用Java ...

地图

我的第一个想法是创建一个Map,其中日期对象为键,覆盖int为值。可能是SortedMap。请参阅Tutorial

  

地图:日期→整数

您可以循环或查询日期键,将其值应用于日历。

在集合中,您需要使用Integer对象而不是int原语。 Auto-boxing会为您完成转换工作。

序列化

然后serialize每次编辑时映射到存储,也就是每次用户覆盖默认速率。或者在您的应用退出时执行此操作。

启动应用时,请从存储中恢复地图。

如果Android支持,您可以使用Java Serialization进行序列化。请参阅此问题Serializing and deserializing a map with key as string

但我只想写一个纯文本文件。 Apache Commons CSV库处理读/写Tab-delimited files (TDF)CSV文件的繁重工作。

我建议使用合理和标准格式ISO 8601YYYY-MM-DD将日期值写入字符串。

提示:考虑使用Joda-Time中的LocalDate对象或java.time的后端而不是java.util.Date/.Calendar作为密钥。

时区

请注意,日期的含义取决于时区。例如,巴黎的新日早些时候比蒙特利尔还要早,那时它仍然是“昨天”。如果您的应用的上下文超出了一个默认时区,您可能需要记录用户选择覆盖时适用的时区。

数据库

如果您有一个不需要全部存储在内存中的数值,那么请使用H2或SQLite等数据库。

对于一小组数据,请使用上述的Map +序列化。

相关问题