1

我必须做一个包含行的 24 小时列表。每行代表一个小时。

例如:我在早上 6 点到 10 点有一个活动。我需要一个对象来覆盖这段时间(早上 6 点 - 上午 10 点)。如图所示:

http://img824.imageshack.us/img824/6190/20130221192829.png

我想知道我该怎么做以及我应该使用什么布局?

4

3 回答 3

1

我会使用 24 行的 ListView,每小时一个,并编写一个自定义适配器来根据您要突出显示的时间段绘制小时背景。
在适配器中,如果小时适合时间段,您只需让 getView 函数更改行布局背景颜色。

在这里你有很好的 ListViews 和 Adapters教程

如果您需要能够标记部分小时,假设 15 分钟间隔,您可以使用这样的自定义行布局:

在此处输入图像描述

您在左侧有一个小时的 TextView 占位符,间隔 15 分钟的 4 个 textViews,(为其背景着色)和一个具有透明背景的重叠以放置文本。

于 2013-02-22T20:18:21.860 回答
0

另一种解决方案是在滚动视图中简单地使用线性布局,它不像 ListView 那样巧妙的内存消耗,因为所有内容都已加载,但由于您限制了将显示的条目数量,因此您可以确定多少内存它需要全部加载。

LinearLayout / ScrollView 组合的最大优势是您可以控制布局,而不受限于将其放入一系列行中。它也比 ListView / Adapter 组合更容易理解,因此应该更容易实现。

编辑:

想一想,LinearLayout 可能不是最好的,因为它不允许单个视图重叠多个小时,使用 RelativeLayout 或 TableLayout 可能会更好。

于 2013-02-22T20:44:38.370 回答
0

我使用 ListView 解决了。首先,我必须获取数据库信息并将其保存在游标中。然后,我创建了一个带有 arrayList 的个性化适配器,其中包含一个活动/事件,其中保存了 id 和活动/事件描述。每个arrayList 位置代表一个小时。游标包含“初始时间”和“最后时间”如果游标包含数字 03 作为初始时间,并且包含数字 08 作为最后时间,那么: -我必须使用从开始到 03 的空值来完成 arrayList。在那方式,前 3 小时将是 arrayList 的前三个位置 - 然后我必须在初始时间和最后一小时之间做减法器,因为我需要知道该活动/事件中有多少 arrayList 位置。- 在 arrayList 的第四个位置,我将活动/事件与 id 和描述放在一起。- 然后,在下一个位置,我必须放置一个带有 id 且没有描述许多行和减法结果的活动/事件。最后,我在个性化适配器中收起了arraylist。我很感激你的帮助。!非常感谢!问候,何塞。

于 2013-02-26T01:51:44.440 回答