显示ListView Android的特定部分

时间:2011-09-23 15:39:38

标签: android listview

我需要一些帮助来获取基于当前时间的列表视图的特定部分。我有一个列表视图,其时间为字符串,如:"09:30" - "10:00" - "10:45"。我正在使用数字时钟在一个活动中显示当前时间,我想根据当前时间显示该列表视图的特定部分。示例:

这是10:30,我希望显示大于10:30的列表视图项,例如:10:4510:55等。

有任何建议怎么做?

1 个答案:

答案 0 :(得分:1)

我不确定您是如何维护数据的。假设每个项目都在Time对象中,该对象实现了Comparable接口,并且您拥有List<Time>所有数据。另外,假设ListView填充了由您ArrayAdapter构建的Time[]支持的List<Time>。 (在MVC术语中,List<Time>将是您的模型,ListView将是视图,而您的Activity类将成为控制器。)

以下代码可用于使用数据填充ListView

private void updateTimes(List<Time> list) {
    Time[] times = new Time[list.size()];
    list.toArray(times);
    mListView = (ListView) findViewById(R.id.listview);
    mListView.setAdapter(new ArrayAdapter<Time>(this, R.layout.listitem, times));
}

如果您希望过滤列表仅显示10:30(或任何其他时间)之后的时间,则可以执行此操作(假设List<Time> mAllTimes是主时间列表,Time class有一个带String)的构造函数:

private void filterTime(String onOrAfter) {
    Time time = new Time(onOrAfter);
    List<Time> filtered = new ArrayList<Time>();
    for (Time t : mAllTimes) {
        if (t.compareTo(time) >= 0) {
            filtered.add(t);
        }
    }
    updateTimes(filtered);
}

调用filterTime("10:30")会将列表限制为10:30或之后的次数。调用updateTimes(mAllTimes)会显示完整的,未经过滤的列表。