如何计算ArrayList中2个对象之间的时差

时间:2016-11-18 15:06:18

标签: java android arraylist iterator

如果标题与请求不符,我很抱歉,但那是我当时能想到的最好的。

所以我有一个ArrayList,它将一个对象作为参数。

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

注意:Movement是类的名称 我有一个计算两个时间字符串之间的时间差的方法,它可以很好地工作。

我的困境是当我点击一个按钮时,一个对象被添加到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)");
}

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

根据您在问题中对我的评论的回复,忘记ArrayList,您只需要参考最新点击。

您正在onClickListener中创建一个Movement移动。将其保存为对象属性而不是局部变量,当您获得下一次单击时,在onClickListener上添加一些代码以检查是否设置了该变量。如果是,只需在存储在对象属性中的运动与刚刚获得的运动之间进行时差。

答案 1 :(得分: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)") 
}