我需要向我的应用程序的用户显示日历,每天都有一个默认率(int),当他/她选择日期时,会提供一个选项来自定义当天的比率(int)。 / p>
显示我正在使用的日历https://github.com/prolificinteractive/material-calendarview
存储每天的费率:
另一个变量存储每天的一般费率,直到用户覆盖它为止。
我感到困惑的是,存储此类数据的最佳方式是什么?我可以使用http://developer.android.com/intl/es/reference/java/util/Calendar.html吗?如果是这样,你能指点我一个教程或什么
答案 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 8601:YYYY-MM-DD
将日期值写入字符串。
提示:考虑使用Joda-Time中的LocalDate
对象或java.time的后端而不是java.util.Date/.Calendar作为密钥。
请注意,日期的含义取决于时区。例如,巴黎的新日早些时候比蒙特利尔还要早,那时它仍然是“昨天”。如果您的应用的上下文超出了一个默认时区,您可能需要记录用户选择覆盖时适用的时区。
如果您有一个不需要全部存储在内存中的数值,那么请使用H2或SQLite等数据库。
对于一小组数据,请使用上述的Map +序列化。