2011-07-06 18 views
1

我正在開發一個Android應用程序,我處於需要通過傳遞一個我創建的類的對象到一個包中以便它可以成爲一個新的活動用於新活動。Android將一個對象與JSONArray成員對齊

我已經研究過如何做到這一點,它似乎是對象最好的辦法是讓他們可以parcelable。但是,問題在於該對象類的其中一個字段是JSONArray類型,它看起來不像JSONArray被支持?或者,也許我只是沒有看夠不夠努力,或者我錯過了一些東西,但我一直在尋找幾個小時,但仍然找不到任何東西。

更具體,我需要一個

writeX到我的包裹對象的字段();

其中X可以包含整數,字符串等等。然而,就像我剛纔所說的,我的一個字段是一個JSONArray類型,因爲一個特定的原因(我不想改變它),它看起來像包裹不支持這個?

謝謝

+0

我剛剛嘗試過一些與此網站的幫助:http://shri.blog.kraya.co.uk/2010/04/26/android-parcel-data-to-pass-between-activities-using -parcelable-class /但它不起作用。我檢查了DDMS,它說它無法編組JSONArray中的值...... –

回答

1

感謝您的答覆,但不幸的是這JSONArray包含了太多不同的信息這個工作(有整數字符串,JSONObjects甚至JSONArrays -_-)。然而,我找到了一種方法,這是通過使用toString方法將整個JSONArray轉換爲字符串。這可以將它放入一個Bundle中。我不喜歡這樣做......但我沒有太多時間在這個問題上思考太久:P。無論如何感謝

+0

o在它發送完之後,我只需通過重構JSONArray來將其轉換回JSONArray:'code' JSONArray array = new JSONArray(string); 'code' –

0

您是否提前知道JSONArray的類型是什麼?如果是這樣,您可以將JSONArray轉換爲已知類型的列表。

JSONArray在此處不受支持,因爲它不是實現Parcelable的類。如果您完全無法控制該JSONArray類型的選擇,則需要將JSONArray轉換爲列表。

下面的代碼已知字符串類型的JSONArray轉換成一個ArrayList:

ArrayList<String> list = new ArrayList<String>();  
JSONArray jsonArray = (JSONArray)jsonObject; 
if (jsonArray != null) { 
    for (int i=0;i<jsonArray.size();i++){ 
    list.add(jsonArray.get(i).toString()); 
} 
1

我能夠使用putSerializable而不是putParcelable將JSONObjects的ArrayList放入一個包中。