Я бы, вероятно, поместил значения в базу данных в ваше первое действие и передал бы только один уникальный идентификатор во второе действие, чтобы он мог воссоздать ArrayList с другой стороны. Но если вы хотите быстрое решение, используйте пакет намерений и сериализуйте / десериализуйте координаты самостоятельно:
ArrayList<Coordinate> mCoords = new ArrayList<Coordinate>();
private void startOtherActivity()
{
int numCoords = mCoords.size();
Intent intent = new Intent();
intent.putExtra("coord_size", numCoords);
for (int i = 0; i < numCoords; i++)
{
Coordinate coord = mCoords.get(i);
intent.putExtra("coord_x_" + i, coord.getX());
intent.putExtra("coord_y_" + i, coord.getY());
}
//start other activity...
}
Затем возьмите значения из пакета на другой стороне и восстановите ArrayList.
Редактировать: Просто понял, что вы говорите о координатах. Тот же принцип все еще применяется, просто вложите в него еще один цикл for и отслеживайте длину каждого отдельного массива.
Обновление: с другой стороны, у вас будет что-то вроде
int len = intent.getIntegerExtra("coord_size", 0);
for(int i = 0; i < len; i++)
{
float x = intent.getFloatExtra("coord_x_" + i, 0.0);
float y = intent.getFloatExtra("coord_y_" + i, 0.0);
mCoords.add(new Coordinate(x, y));
}