Как вы передаете массив объектов в Activity? - PullRequest
7 голосов
/ 15 ноября 2010

Я прочитал сообщения о передаче массивов из и в действия, но я не уверен, как бы я это сделал для моего конкретного случая.

У меня есть массив объектов с именем DaysWeather (массив DaysWeather []), в котором объекты имеют несколько атрибутов String, а также атрибут растрового изображения. Я где-то читал, что вы должны сделать его сериализуемым или разбираемым, или что-то в этом роде, но на первый взгляд это кажется грязным.

Может ли кто-нибудь привести меня в правильном направлении?

Есть ли простой способ сделать это?

1 Ответ

5 голосов
/ 15 ноября 2010

В ваших объектах должен быть реализован интерфейс Parcelable .

Когда это будет сделано, вы можете создать массив Parcelable и передать его в действие:

// We assume we have an array: DaysWeather[] input;
Parcelable[] output = new Parcelable[input.length];
for (int i=input.length-1; i>=0; --i) {
    output[i] = input[i];
}

Intent i = new Intent(...);
i.putExtra("myArray", output);

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

...