2016-11-18 28 views
0

如果標題與請求不一致,那麼我很抱歉,但這是我在當時最好的方式。如何計算ArrayList中的兩個對象之間的時間差

所以我有一個ArrayList,需要一個對象作爲參數。

private List<Movement> walked = new ArrayList<>(); 

注:運動是類 的名字我有一個計算兩個時間字符串之間的時間差的方法和它奇妙的作品。

我的兩難是當我點擊一個按鈕時,一個對象被添加到ArrayList。我想知道這個新點擊與下一個點擊之間的時間間隔,因爲這兩個操作的時間都被記錄下來。

我做我的onClickListener這樣的東西

Movement move = new move(); 
move.setTime("current time"); 
walked.add(move); 

因此,基於點擊次數,我希望能夠得到在列表中的對象,讓他們各自的時間和計算時間每個差異並輸出它,當我點擊。

我的功能做的時間計算工程我只是無法正確迭代。這是我嘗試過的。

for(Movement x:walked){ 
    Toast(TimeCal.getDuration(x.getTime(), "i'm to put the previous object time here") + " min(s)"); 
} 

任何幫助將不勝感激。

+1

'對(INT I = 1; I Shark

+1

你想要做的是點擊一個按鈕,每當你點擊你想要顯示的方式時,自上次點擊它以來已經過去了很多時間?如果是這樣,你是否需要歷史或點擊數據或類似的東西,或者你可以使用最後一次點擊然後丟棄它? – palako

+0

正是@palako,我並不需要點擊統計。時差是最重要的。謝謝 –

回答

0

爲了將一次循環中的當前點擊與之前的點擊進行比較,您不應使用foreach,而應使用for循環。沿着這些線的東西:

if(walked.size() > 0) 
for(int i = 1; i < walked.size(); i++) { 
    Movement current = walked.get(i); 
    Movement prev = walked.get(i-1); 
    Toast(TimeCal.getDuration(current.getTime(), prev.getTime()) + " min(s)") 
} 
0

根據你對我的評論的迴應,忘記ArrayList,你需要的只是對最新點擊的引用。

您正在您的onClickListener中創建移動移動。將它保存爲一個對象屬性而不是局部變量,當你獲得下一次單擊時,在onClickListener上添加一些代碼來檢查是否設置了該變量。如果是這樣,只需在存儲在對象屬性中的移動和剛剛獲得的移動之間進行時差即可。

+0

哦,快點,對不起@palako,我忘了提及,我將不得不保存所有的點擊(時間)後,這就是爲什麼我使用arraylist –

+0

保存以及以後使用它們,或者只是做同樣的事情我告訴過你,但保持數組全局並訪問最後一個元素進行比較。 – palako

相關問題