2011-08-10 90 views
2

這個問題有2個部分如何將ArrayList <my_custom_class>傳遞給其他活動?

我試圖從一個活動傳遞一個ArrayList到另一個。這個ArrayList包含一些從我創建的類實例化的對象(包含一些字符串和drawable)。

我在網上找到我需要讓我的課parcelable這是一個問題,特別是與繪製。(這是第一部分)

一次我的類實現parcelable,我如何能夠發送/獲取我arraylist

我希望我自己清楚。提前致謝。

回答

0

我強烈建議你重新評估你的架構。由於多種原因,您不應該跨越活動邊界傳遞可繪製對象,包括上下文泄漏,位圖泄漏以及可能破壞IPC調用的大小限制。

如果您確實需要這種行爲,正確的方法是將數據保存在數據庫/ SharedPreference中,並將位圖保存到文件中,然後當第二個活動啓動時,您可以通過拉入數據和圖像。

你能描述爲什麼兩個不同的活動需要訪問相同的drawable列表嗎?我懷疑一些重組可以完全避免這個問題。

+0

感謝您的回覆, 首先,該列表不僅包含可繪製表單,並且通過此類列表的原因是第一個活動具有表單,並且在進行一些研究後將調用Web服務。結果包括一些圖片url,並將在列表視圖和下一個將要開始的活動中加載。所以我猜想發送drawable會更好,然後從web上加載它們兩次..不是嗎? 我希望我自己清楚, –

+0

好的,那麼讓我問你 - 當你旋轉設備並通過銷燬/創建循環時,你的第一個活動會發生什麼?或者如果您按Home鍵,然後長按Home鍵返回到您的應用程序?您的圖像再次下載,或者您崩潰。您需要將這些下載的圖像保存在磁盤上的臨時緩存中,以便您可以在不下載的情況下再次訪問它們。一旦你這樣做,從下一個活動中訪問它們也應該是微不足道的。 – Josh

1

您可以將ArrayList設置爲公共靜態,並可以通過將其作爲Activity_name.array_list_name進行調用來訪問任何您想要的位置。

其中Activity_name是您定義ArrayList的類名。

+0

謝謝你回答..設置arrayList作爲公共可能是一個解決方案,但我想把它發送到下一個活動(這將改變它,這些改變只需要保留在這個活動),所以我需要知道如何讓我的類可以調用 –

+0

不,如果將其定義爲public static,它將不會更改ArrayList中的值。 –

+0

實際上,對**靜態**對象所做的更改將在整個應用程序中進行,這將不會對您有所幫助。 –

0

傳遞對象是不可能不擴展Parcelable ..所以我建議創建類叫store()什麼,並使其成爲singleTon。其中有一個ArrayList()類型的私人領域。創造getter和setter方法相同的變量,在任何你正在創建的對象只是說store().getInstance().setObject(yourObject);

,並同時獲得

store().getInstance().getObject(); 
+0

感謝您的建議,但我曾經徘徊過,是否有人知道如何使用drawable來實現Parcelable。 –

相關問題