Как пройти ArrayListиз одного занятия в другое - PullRequest
0 голосов
/ 28 июля 2011

Я целый день пытался это сделать, и мне не повезло.У меня есть ArrayList с массивом типов координат внутри, и я хочу передать это от одного действия к другому.Я не думаю, что это возможно с помощью Intent.Поэтому мне интересно, какой другой вариант у меня есть?Я хочу что-то простое ..

Ответы [ 4 ]

0 голосов
/ 28 июля 2011

Я бы, вероятно, поместил значения в базу данных в ваше первое действие и передал бы только один уникальный идентификатор во второе действие, чтобы он мог воссоздать 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));
}
0 голосов
/ 28 июля 2011

Создайте Bundle и попробуйте поставить ArrayList.Затем отправьте пакет в намерение.

0 голосов
/ 28 июля 2011

Вы можете написать класс ParcelableCoordinate, который реализует Parcelable, и затем заставить его преобразовать объекты Coordinate в объекты ParcelableCoordinate, поместить их в намерение, а затем сделать обратное с другой стороны.

0 голосов
/ 28 июля 2011

У вас может быть одноэлементный класс «Модель», в котором вы можете хранить объект ArrayList из одного действия и извлекать его из другого.

...