我试图将完整的arraylist从一个活动传递到另一个活动。
我试过这样的方式..
arraylist=new ArrayList<HashMap<String,Object>>();
Intent i= new Intent(ListActivity.this,search.class);
i.putExtra("arraylist", arraylist);
startActivity(i);
有人可以帮助我@thanks
答案 0 :(得分:1)
这不起作用,因为Java中的Object
类不可序列化。有关原因的解释,请参阅this question。
Intent.putExtra()
方法需要一个实现可序列化接口的类型,Object没有实现它,因此它不起作用。我建议而不是让HashMap<String,Object>
用一个更具体的类型替换Object来实现Serializable接口。有关如何执行此操作,请参阅此tutorial。
<强>更新强>
如果您传递的数据很大,则序列化和反序列化可能会产生相当大的开销。因此,使用Static Singleton类来存储arraylist可能是值得的。下面的代码示例显示了如何实现这一点:
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;
}
}
此处参考的是静态单例的tutorial。