将arraylist从一个活动传递到另一个活动

时间:2013-07-18 08:32:39

标签: android android-intent arraylist

我试图将完整的arraylist从一个活动传递到另一个活动。

我试过这样的方式..

arraylist=new ArrayList<HashMap<String,Object>>();


    Intent i= new Intent(ListActivity.this,search.class);
               i.putExtra("arraylist", arraylist);
               startActivity(i);

有人可以帮助我@thanks

1 个答案:

答案 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