我需要一点帮助,以获得列表视图的特定部分根据当前时间。我有一个列表视图与时间字符串如:"09:30"
- "10:00"
- "10:45"
。我使用数字时钟在一个活动中显示当前时间,我想根据当前时间显示该列表视图的特定部分。例如:显示ListView的具体部分Android
这是10:30
,我要显示它比10:30
像大列表视图中的项目:10:45
,10:55
等
任何建议,如何做到这一点?
我需要一点帮助,以获得列表视图的特定部分根据当前时间。我有一个列表视图与时间字符串如:"09:30"
- "10:00"
- "10:45"
。我使用数字时钟在一个活动中显示当前时间,我想根据当前时间显示该列表视图的特定部分。例如:显示ListView的具体部分Android
这是10:30
,我要显示它比10:30
像大列表视图中的项目:10:45
,10:55
等
任何建议,如何做到这一点?
我不确定你如何维护你的数据。假设每个项目都在一个实现了Comparable
接口的Time
对象中,并且您有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
类的构造函数需要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)
将显示完整的未过滤列表。
你能更详细地阐述一下,你正在尝试做什么 – ap400200
我有listview与时间作为项目,我想根据当前时间显示不同的项目。 –
为什么不直接在列表视图中调用setPosition(int pos),其中pos对应于当前时间的位置? – slayton