从一个活动传递到另一个ArrayList中(Pass the arraylist from one

2019-10-18 09:32发布

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

我曾尝试这样的方式..

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


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

可能有人帮助我@thanks

Answer 1:

这将无法工作,因为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;
    }
}

仅供参考这里是一个教程静态单身。



文章来源: Pass the arraylist from one activity to another