我需要一些帮助来获取基于当前时间的列表视图的特定部分。我有一个列表视图,其时间为字符串,如:"09:30"
- "10:00"
- "10:45"
。我正在使用数字时钟在一个活动中显示当前时间,我想根据当前时间显示该列表视图的特定部分。示例:
这是10:30
,我希望显示大于10:30
的列表视图项,例如:10:45
,10:55
等。
有任何建议怎么做?
答案 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)
会显示完整的,未经过滤的列表。