在一系列时间内返回“下一个”时间

时间:2013-01-26 01:08:02

标签: android list datetime time

我正在寻找一个如何在列表中读取时间的参考示例,并返回“下一个”发生的那个。

我正在制作一个计划应用程序,但目前我正在做一堆非常嵌套的if语句,看起来像这样:

if (Time.compare(bus1.getTime(), currentTime) > 0) {
                setTimeLabelLOY(bus1);
            } else {
                if (Time.compare(bus2.getTime(), currentTime) > 0) {
                    setTimeLabelLOY(bus2);
                } else {
                    if (Time.compare(bus3.getTime(), currentTime) > 0) {
                        setTimeLabelLOY(bus3);
                    } else {
                        if (Time.compare(bus4.getTime(), currentTime) > 0) {
                            setTimeLabelLOY(bus4);
                        } else {
                            if (Time.compare(bus5.getTime(), currentTime) > 0) {
                                setTimeLabelLOY(bus5);
                            } else {
                                if (Time.compare(bus6.getTime(), currentTime) > 0) {
                                    setTimeLabelLOY(bus6);

显然,我的Bus类包含我已硬编码的Time个元素。我宁愿只读一个时间列表并输出下一个。或者可以制作一个数组,并根据当前时间对它们进行排序?

非常感谢任何关于如何更好地做到这一点的建议或例子。

1 个答案:

答案 0 :(得分:1)

如果您将所有公交车存放在列表中,您可以使用:

List<Bus> buses = new ArrayList<Bus>();
buses.add(bus1);
// etc

for(Bus bus : buses) {
    if(Time.compare(bus.getTime(), currentTime) > 0) {
        setTimeLabelLOY(bus);
        break;
    }
}

您还可以将所有总线数据存储在SQLite数据库中,然后使用如下简单查询:

SELECT * FROM Buses WHERE time > currentTime LIMIT 1;