2011-07-06 11 views
1

私はAndroidアプリを開発しています。作成したクラスのオブジェクトを渡すことで新しいアクティビティを開始する必要がある状況にあります新しい活動で使用されます。Android JSONArrayメンバーでオブジェクトを分割する

私はこれを行う方法を研究しています。オブジェクトの場合は、そのオブジェクトをParcelableにするのが最善の方法です。しかし、問題は、そのオブジェクトのクラスのフィールドの1つがJSONArray型であり、JSONArrayがサポートされていないようです。それとも、私は何かを見逃してしまったか、何かを見逃してしまったかもしれませんが、何時間も探していて、何も見つけられませんでした。

は、具体的には、私は

WRITEX()と私のオブジェクトのフィールドを区分けする必要があります。

ここで、Xはint、文字列などのようなものです。しかし、私が言ったように、特定の理由で私のフィールドの1つはJSONArray型です(私はとにかくこれを変更したくない)パーセルはこれをサポートしていませんか?

おかげ

+0

私はこのウェブサイトの助けを借りて何かを試しました:http://shri.blog.kraya.co.uk/2010/04/26/android-parcel-data-to-pass-between-activities-using -parcelable-classes /しかしそれはうまくいきませんでした。私はDDMSをチェックして、JSONArrayの値をマーシャリングすることができないと言っています.... –

答えて

1

おかげで、残念ながらこのJSONArrayが、これが機能するためにはあまりにも多くの様々な情報が含まれています(これは、整数の文字列を持っています

次のコードでは、ArrayListに知られている文字列型のJSONArrayを変換し、 、JSONObjects、さらにはJSONArrays -_-)。私は方法を見つけました。これはtoStringメソッドを使用してJSONArray全体を文字列に変換することです。これによりバンドルに入れることができます。私はこのようにするのは本当に好きではありません...しかし、私はあまりにも長い間このことを考えている時間はありません。とにかくありがとう

+0

oそしてそれを送信した後、JSONArrayを再構築してJSONArrayに戻します: 'code' JSONArray配列=新しいJSONArray(文字列); 'code' –

0

あなたはタイプJSONArrayがであるか事前に知っていますか?もしそうならJSONArrayを既知の型のListに変換することができます。

JSONArrayは、Parcelableを実装するクラスではないため、ここではサポートされていません。そのJSONArray型の選択を絶対に制御できない場合は、JSONArrayをリストに変換する必要があります。返信用

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

putParcelableではなくputSerializableを使用してJSONObjectのArrayListをバンドルすることができました。

関連する問題