2010-11-15 22 views
7

Czytałem posty o przekazywaniu tablic z i do działań, ale jestem zdezorientowany, jak to zrobić w moim konkretnym przypadku.Jak przekazać tablicę obiektów do działania?

Mam tablicę obiektów o nazwie DaysWeather (tablica DaysWeather []), w której obiekty mają kilka atrybutów String, a także atrybut bitmapy. Czytałem gdzieś, że musisz zrobić to serializowalnym lub parseable lub coś takiego, ale na pierwszy rzut oka wydaje się być niechlujne.

Czy ktoś może mnie poprowadzić we właściwym kierunku?

Czy istnieje prosty sposób na zrobienie tego?

Odpowiedz

5

Twoje obiekty muszą zaimplementować Parcelable interface.

Kiedy to nastąpi, można utworzyć Parcelable tablicę i przekazać go do działania:

// 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); 

Należy również pamiętać, że podczas realizacji Parcelable interfejs, nie szeregować pełne ciężkich przedmiotów. Na przykład dla swojej bitmapy, serializuj tylko identyfikator ressource i podczas nadmuchiwania odtwórz ponownie bitmapę z identyfikatora ressource.

+0

Ale nie rób tego. Użyj innych metod przesyłania obiektów, takich jak usługa. – Falmarri

+0

Innym sposobem przekazywania obiektów między działaniami jest korzystanie z dostawców treści, rozgłaszaczy i filtrów intencji. (http://thinkandroid.wordpress.com/2010/02/02/custom-intents-and-broadcasting-with-receivers/) –

+1

Nie wiem, co masz na myśli mówiąc "nie serializuj pełnych ciężkich przedmiotów. " Moje mapy bitowe nie mają identyfikatorów zasobów, ponieważ są pobierane z sieci bezpośrednio do odpowiednich obiektów kontenera. Czy możesz skierować mnie do odpowiedniego samouczka/przykładu realizacji Parcelable? Moje obiekty (DaysWeather) to po prostu struktury danych zawierające 5 ciągów i bitmapę. Nie jestem do końca pewien, jak zaimplementować metodę writeToParcel() z tymi danymi. – joepetrakovich

Powiązane problemy