1

我正在尝试将完整的数组列表从一个活动传递到另一个活动。

我试过这样..

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


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

有人可以帮我吗@thanks

4

1 回答 1

1

这将不起作用,因为ObjectJava 中的类不可序列化。有关原因的解释,请参阅此问题。

Intent.putExtra()方法需要一个实现可序列化接口的类型,Object 没有实现这个,因此它不会工作。我建议不要HashMap<String,Object>用实现 Serializable 接口的更具体的类型替换 Object 。请参阅本教程以了解如何执行此操作。

更新

如果您传递的数据很大,则与序列化和反序列化相关的开销可能相当大。因此,可能值得使用静态单例类来存储数组列表。下面的代码示例显示了如何实现这一点:

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;
    }
}

作为参考,这里有一个关于静态单例的教程。

于 2013-07-18T08:44:52.553 回答