2011-09-23 57 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)將顯示完整的未過濾列表。