2010-11-29 6 views
2

私はアンドロイドアプリを構築しています。履歴関数を追加したいと思います。データベースを使用する代わりに、データを保存して取り出すことができるようにリストをシリアライズすることができると聞きました。どのように動いているのかわからないので、私はここに来てアドバイスを求めます。良いリンクが役に立つかもしれません。HashSetをシリアライズする方法

おかげ

答えて

2

シリアライズ可能なアンドロイド実装のパーセルブルははるかに効果的な方法で使用しないでください。キャッチは、オブジェクトを自分でパーセルする方法を定義する必要がありますが、それは本当に難しいことではありません。

簡単な例:

public class MyParcelable implements Parcelable { 
    private int mData; 

    public int describeContents() { 
     return 0; 
    } 

    public void writeToParcel(Parcel out, int flags) { 
     out.writeInt(mData); 
    } 

    public static final Parcelable.Creator<MyParcelable> CREATOR 
      = new Parcelable.Creator<MyParcelable>() { 
     public MyParcelable createFromParcel(Parcel in) { 
      return new MyParcelable(in); 
     } 

     public MyParcelable[] newArray(int size) { 
      return new MyParcelable[size]; 
     } 
    }; 

    private MyParcelable(Parcel in) { 
     mData = in.readInt(); 
    } 
} 

あなたがHashSetのを保存したい場合は、あなただけのハッシュ内のオブジェクトもparcelableていることを確認する必要があります。

これはあまりにも多くの問題であると感じる場合、以前にNailujによって投稿された回答が正しいです。

+0

おかげで、私は彼それが行く見て、@blindstuff例に試してみますよ;) –

16

HashSetSerializableを実装しています。つまり、ハッシュセット内に置かれたすべてのオブジェクトがSerializable(およびそれらの内部のすべてのオブジェクトなど)を実装している限り、他の通常のシリアライズ可能なJavaオブジェクトと同様にシリアル化できます。

関連する問題