2012-02-23 14 views
10

私のParcelableのほとんどは動作しています。 out.writeString、out.writeInt、in.readString()などのような単純なものは完全に動作しています。リスト<String> readStringArray in Parcelable

私の問題は、Array/List/ArrayListをパーセルしたいときです(私はすべて試しました)。私は現在にしようとしている

List<String> 

out.writeStringList() 

が正常に動作します。

Eclipseは

in.readStringList(List<String> list) 

がバックでそのデータを読み取ることがあることを示唆している。しかし、それは私のためにそれをやっていません。

()に入れるものは何ですか?

私は何も試していませんでしたが、結果は '一致する引数を追加してください...' 私はnullを試しました。すべてが「voidからListに変換できません」というエラーを返します。

これについてAndroid Developerには何も見つかりません。

誰でも手助けできますか?

おかげ

デイブ

答えて

19

は、メソッドreadStringList(...)への戻り値の型を割り当てるしようとしているように聞こえるそのエラーから

「リストに空から変換することはできません」変数List<T>。言い換えれば、あなたはおそらく次のような文章を書いていますか?

List<String> stringList = in.readStringList(stringList) 

readStringList(...)はvoidを返すので、Eclipseが不平を言っているかもしれません。実際にはではなく、はvoidメソッドから戻り値の型を取得しようとしているはずです。この場合、結果をパラメータとして割り当てる変数を指定する必要があります。したがって、これは十分です:

List<String> stringList = null; 
in.readStringList(stringList) 

をところで、あなたは、代わりにSerializableインタフェースを使用することを検討してください(インテントを使用して)活動の間で比較的単純なデータ・オブジェクトを渡すことができるようにするためにParcelableを実装している場合 - それを特に複数のオブジェクトに対して同じプロセスを繰り返す必要がある場合は、たくさんの作業を節約できます。小包に

+0

から、それだ、ありがとう。 StringまたはIntegerとは異なり、x = in.readString()を記述する場合は、x = in.readString()に置き換えます。readStringList(x) - xは以前に作成されたリストです。 Parcelableはもっとセットアップが必要なことは知っていますが、私が読んだことから、そのパフォーマンスはSerializableのパフォーマンスを上回ります。再度、感謝します。 – DaveSav

+0

事務局:それは働いていましたし、私のコードを整理して停止しました。あなたはまた困惑している場合。答えはコードでhttp://idlesun.wordpress.com/2011/07/15/android-parcelable-example-2-sub-object-and-list/ – DaveSav

+0

+1いいです。私は直面していました同じ問題 –

13

書き込み:

out.writeStringList(yourStringList); 

読む小包

List<String> newList = in.createStringArrayList(); 
+1

これは私のために働いた。 – Arun