繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM