【发布时间】:2020-08-27 19:56:31
【问题描述】:
我有一个名为 CanvasState 的类,它包含两个 2D 数组和一个静态 ArrayList。
public class CanvasState {
private int [][] colorArray;
private boolean [][] boolArray;
private static List<CanvasState> listState = new ArrayList<>();
public CanvasState(int [][] colorArray, boolean [][] boolArray){
this.colorArray = colorArray;
this.boolArray = boolArray;
}
public void addToArrayList(CanvasState canvasState){
listState.add(canvasState);
}
}
所以每当画布被绘制并且用户抬起手指时,我都会保存状态。(这是在另一个类中)
if(event.getAction() == MotionEvent.ACTION_UP){
canvasState = new CanvasState(colors, cellChecked);
canvasState.addToArrayList(canvasState);
}
我期望得到一个 CanvasStates 的 ArrayList 来保存我的 2D 数组及其调整后的值,但似乎虽然在每个 ACTION_UP 上创建了一个新的 CanvasState 对象,但每个 CanvasObject 都被重新编写,因此两个数组对于ArrayList 中的所有对象。有没有办法解决?或者 ArrayList 不适合这个?
【问题讨论】:
-
假设触发不同的ACTION_UP时colors和cellChecked是不同的,那么为什么两个数组是一样的呢?
标签: java android arrays arraylist