2016-11-18 27 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

相关问题