あるアクティビティから別のアクティビティに完全な配列リストを渡そうとしています。
私はこのように試しました。
arraylist=new ArrayList<HashMap<String,Object>>();
Intent i= new Intent(ListActivity.this,search.class);
i.putExtra("arraylist", arraylist);
startActivity(i);
誰かが@thanksを手伝ってくれませんか
Object
Javaのクラスはシリアル化できないため、これは機能しません。理由の説明については、この質問を参照してください。
このIntent.putExtra()
メソッドには、シリアル化可能なインターフェイスを実装する型が必要です。Objectはこれを実装しないため、機能しません。HashMap<String,Object>
オブジェクトをSerializableインターフェイスを実装するより具体的なタイプに置き換えるのではなく、お勧めします。これを行う方法については、このチュートリアルを参照してください。
更新
渡すデータが大きい場合、シリアル化と逆シリアル化に関連してかなり大きなオーバーヘッドが発生する可能性があります。したがって、静的シングルトンクラスを使用して配列リストを格納する価値があるかもしれません。以下のコードサンプルは、これを実装する方法を示しています。
public class DataStore {
private static final DataStore instance = new DataStore ();
private arraylist = new ArrayList<HashMap<String,Object>>();
//Private constructor
private DataStore () {}
//Class is only accessible through this method
public static Singleton getInstance() {
return instance;
}
//Accessors for your data
private ArrayList<HashMap<String,Object>> getArrayList()
{
return arraylist;
}
private void setArrayList(ArrayList<HashMap<String,Object>> value)
{
arraylist = value;
}
}
参考までに、静的シングルトンに関するチュートリアルがあります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加