我试图从一个活动传递完整的ArrayList到另一个。
我曾尝试这样的方式..
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()
方法需要实现Serializable接口类型,对象不那么因此它不会工作,实现这一点。 我建议,而不是一个HashMap<String,Object>
您使用实现Serializable接口更具体的类型替换对象。 看到这个教程对如何做到这一点。
UPDATE
如果你正在传递大量数据,则可能是序列化和反序列化相关的相当显著的开销。 因此它可能会使用一个静态Singleton类来存储数组列表是值得的。 下面的代码示例展示了如何实现这一点:
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;
}
}
仅供参考这里是一个教程静态单身。