[英]Best way to store data for each day in Android?
我需要向我的应用程序的用户显示一个日历,每天都有一个默认费率 (int),当他/她选择日期时,可以选择自定义当天的费率 (int)。
要显示我使用的日历https://github.com/prolificinteractive/material-calendarview
要存储每天的费率:
一个不同的变量存储每天的一般费率,直到用户覆盖它。
我感到困惑的是存储此类数据的最佳方法是什么? 我可以使用http://developer.android.com/intl/es/reference/java/util/Calendar.html吗? 如果是这样,你能给我指一个教程或其他东西吗
我不知道 Android,但在 Java 中......
我的第一个想法是创建一个Map ,以日期对象为键,以覆盖int
为值。 可能是SortedMap 。 请参阅教程。
映射:日期 → 整数
您可以循环或查询日期键以将它们的值应用于您的日历。
在集合中,您将需要使用Integer
对象而不是int
原语。 自动装箱将为您完成转换工作。
然后每次编辑时将该 Map序列化到存储中,即每次用户覆盖默认速率时。 或者在您的应用退出时执行此操作。
启动应用程序时,从存储中恢复地图。
如果 Android 支持,您可以使用Java 序列化进行序列化。 请参阅此问题,序列化和反序列化具有键为 string 的映射。
但我只会写一个纯文本文件。 Apache Commons CSV库处理读取/写入制表符分隔文件 (TDF)或CSV文件的繁重工作。
我建议使用ISO 8601的合理和标准格式将日期值写入字符串: YYYY-MM-DD
。
提示:考虑使用来自 Joda-Time 的LocalDate
对象或 java.time 的 backport 而不是 java.util.Date/.Calendar 作为键。
请注意,日期的含义取决于时区。 例如,新的一天在巴黎比在仍然是“昨天”的蒙特利尔早。 如果您的应用程序的上下文超出了一个默认时区,您可能需要记录当您的用户就覆盖做出选择时适用的时区。
如果您有无数个不需要都在内存中的值,那么请使用H2或 SQLite 等数据库。
对于一小组数据,使用上面描述的 Map + 序列化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.