0

我目前有一个显示渡船时间表的 Android 应用程序。该应用程序可以显示完整的时间表(只是一个巨大的列表),但该应用程序的卖点是它将显示接下来的两艘渡轮何时出发以及距离当前时间还有多长时间。

我对 Java 比较陌生,目前在我的代码中使用大型 Switch() 语句。基本上,它获取当前电话时间并将其与时间表中的所有时间进行比较,此时它会显示接下来的两个出发时间,然后计算当前时间与出发时间之间的差异。

我确信 switch 语句对于速度目的和代码更改目的来说并不是最好的主意。例如,如果有一次更改,它的一堆代码行会进入并修复该一次更改。此外,如果整个时间表发生变化,每个人都必须更新他们的应用程序才能使时间变化生效。我的理想情况是在我的网络服务器上的某个位置存储一个文件,该文件可以下载并插入到一个哈希图中(我认为这是正确的术语),如果时间发生变化,它将加载新的时间表。

不知道这有多令人困惑,但如果有人能解释我如何使用哈希图或其他你可能推荐的东西来完成这项任务,我将不胜感激。目前,变量是两个渡轮码头以及一周中的哪一天,因为每天的时间表都在变化(周一、周二-周五、周六、周日)。

以下是应用程序的屏幕截图,如果我的帖子不清楚,您可以理解它。先感谢您。

截屏:

截屏

4

2 回答 2

1

将计划对象存储在排序数组中。然后,您可以对数组进行二进制搜索,以查找大于当前时间的第一个值。您可能会使用一些由位置和适用的星期几组成的父数组。

您可以轻松地将这种数据结构写入由应用程序读取和解析以进行更新的文件,而不是编译到代码中。

这个细节?首先,了解Android中的资源。如果不存在更新的计划,则回退到默认资源。

其次,使用 HTTP 头请求检查是否存在较新的文件。如果是,解析、下载和保存状态。使用 Save Instance State 保存 Android Activity 状态

最后,XML 对于数据分发很方便,即使速度不快。每个人都理解它,并且很容易更新或移交。

<ferry location=0 time=2045>
    <day>1</day>
    <day>2</day>
    <day>3</day>
    <day>4</day>
    <day>5</day>
</ferry>

<ferry location=0 time=0800>
    <day>6</day>
</ferry>
于 2011-10-11T17:40:45.477 回答
0

您将需要数据库之类的东西来保存计划数据。这将帮助您将代码与数据分开。我不熟悉 Android,但我认为设备上有一个 sqlite 数据库接口。

此外,由于这是一个小型设备上的应用程序,您可以通过互联网连接到服务器上的日程表数据库。这样,您必须仅在一个地方(在服务器上)维护计划数据,并且客户端将始终使用最新数据。

于 2011-10-11T17:45:43.537 回答