如果标题与请求不符,我很抱歉,但那是我当时能想到的最好的。
所以我有一个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)");
}
任何帮助将不胜感激。
答案 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)")
}