【问题标题】:Android ArrayList populated with last elements data填充了最后一个元素数据的 Android ArrayList
【发布时间】:2010-07-01 15:43:37
【问题描述】:

我正在使用 Android onTouchEvent 来注册触摸和相关的移动。然后我想沿着这条路径迭代一个精灵。

我需要存储手指跟踪的路径以供以后使用。

问题是手指离开屏幕后,ArrayList (pArray) 完全填充了 ACTION_UP 坐标的 X 和 Y 位置。

从日志中我可以看到它在手指移动时将当前 X 和 Y 位置添加到 Arraylist,这很好,但是 Arraylist 被 Arraylist.size() - 1 中的数据覆盖...

谁能给点建议。

public boolean onTouchEvent(MotionEvent event) {

  synchronized (mHeartbeat.getSurfaceHolder()) {

    getXX = event.getX();
    getYY = event.getY();

    pathArr.setX(getXX);
    pathArr.setY(getYY);

    pArray.add(pathArr);

    if (event.getAction() == MotionEvent.ACTION_DOWN) {

    } else if(event.getAction() == MotionEvent.ACTION_MOVE) {

    } else if(event.getAction() == MotionEvent.ACTION_UP) {

    }

    return true;
   }
 }

【问题讨论】:

    标签: android arraylist


    【解决方案1】:

    这是因为您没有创建新的pathArr 变量并且每次都将相同的变量添加到数组中。它似乎也是一个实例字段。您需要将其更改为局部变量并为每个事件创建一个新变量。

    【讨论】:

    • 谢谢,它有效。仍然有点困惑,因为我每次都会覆盖 pathArr 的内容,然后复制到数组中并且不会创建一个新的 pathArr 只是吃内存?
    猜你喜欢
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多