2011-09-23 58 views
0

我需要一点帮助,以获得列表视图的特定部分根据当前时间。我有一个列表视图与时间字符串如:"09:30" - "10:00" - "10:45"。我使用数字时钟在一个活动中显示当前时间,我想根据当前时间显示该列表视图的特定部分。例如:显示ListView的具体部分Android

这是10:30,我要显示它比10:30像大列表视图中的项目:10:4510:55

任何建议,如何做到这一点?

+1

你能更详细地阐述一下,你正在尝试做什么 – ap400200

+0

我有listview与时间作为项目,我想根据当前时间显示不同的项目。 –

+1

为什么不直接在列表视图中调用setPosition(int pos),其中pos对应于当前时间的位置? – slayton

回答

1

我不确定你如何维护你的数据。假设每个项目都在一个实现了Comparable接口的Time对象中,并且您有List<Time>包含所有数据。另外,假设ListViewArrayAdapter填充,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类的构造函数需要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或10:30之后的次数。调用updateTimes(mAllTimes)将显示完整的未过滤列表。