2015-06-27 4 views
1

Я использую ArrayList для отслеживания пути линии, нарисованной на экране (Android).Java ArrayList из ArrayList нединамический

Я хотел бы сохранить эти значения (в другом ArrayList), а затем проанализировать их, как только я нажму кнопку «Отправить».

Однако, похоже, он добавляет указатель и не сохраняет то, что есть в это конкретное время.

public static ArrayList<Float> drawnData = new ArrayList<>(); 
public static ArrayList<ArrayList<Float>> saveData = new ArrayList<>(); 

    //This is called from another class upon MotionEvent.ACTION_UP 
    //drawnData is updated from another class during the drawing 
    public void updateData(){ 
     saveData.add(drawnData); 
    } 

Как настроить это так, он сохраняет то, что в drawnData каждый раз, когда вызывается метод, а не просто указатель на то, что в настоящее время в drawnData?

Например, если этот метод вызывается 5 раз, когда я смотрю на данные, он содержит 5 ArrayLists, все содержащие данные для пути, который был нарисован последним, вместо каждого из отдельных путей.

Бонусный вопрос: Должен ли я использовать List вместо ArrayList?

ответ

2

Добавить копию drawnData:

saveData.add(new ArrayList<Float>(drawnData)); 

Что касается списка против ArrayList, это всегда лучше, чтобы объявить переменные, используя типы интерфейсов вместо типов реализации.

public static List<Float> drawnData = new ArrayList<>(); 
public static List<List<Float>> saveData = new ArrayList<>(); 
+0

Блестящий, что работает. Спасибо :) – Metallor

+0

@Metallor Добро пожаловать – Eran

Смежные вопросы