将带有对象的ArrayList传递给新的Activity?

时间:2011-04-29 18:08:14

标签: android object arraylist android-intent

我正在尝试将ArrayList从我的第一个Activity传递到下一个Activity。基本上,第一个活动解析XML文件并创建一个包含内部对象的ArrayList。我想要做的是将ArrayList发送到我的第二个活动,并在ListView中显示一些对象数据。

我想过用一个意图做这个,但看起来只有原始数据类型通常通过意图传递。这是对的吗?

如果是这样,传递数据的更好的解决方案是什么?当然,Android必须提供能够做这种事情的东西。

非常感谢任何帮助/代码示例..

由于

修改

我通过首先创建和调用intent来解决这个问题,并且只解析我调用的Activity中的XML。这样我就不再需要传递对象了。但对于那些感兴趣的人,您可以阅读有关如何通过活动传递数据的信息here.

6 个答案:

答案 0 :(得分:5)

复杂类型可以通过Parcelable传递。这个问题就是一个例子:

Help with passing ArrayList and parcelable Activity

答案 1 :(得分:2)

我会在数组上执行toString并通过执行intent.putExtra("label". array.toString());作为额外的传递,然后在新活动中恢复它。

答案 2 :(得分:1)

如果是字符串,则可以使用putStringArrayListExtra(String name, ArrayList<String> value)传递字符串列表。或者,您可以序列化List,然后使用putExtra(String name, Serializable value)

如果您不想/不能使用上述内容,则可以使用带有对List的静态引用的中央util类。只需在第一个Activity中设置它,然后在第二个Activity中设置它。

答案 3 :(得分:1)

这可能是完全不好的做法,我不会更清楚,但你可以将ArrayList声明为public和static。然后只需使用Activity.ArraylistName访问它。

答案 4 :(得分:0)

您可以在应用程序级别设置ArrayList的范围,也可以使用parcelable。

执行此操作

答案 5 :(得分:0)

我把这个技巧从第一个Activity发送到第二个。

第一项活动

ArrayList<String> mylist = new ArrayList<String>();  
Intent intent = new Intent(ActivityName.this, Second.class);
intent.putStringArrayListExtra("key", mylist);
startActivity(intent);

第二项活动

要检索

ArrayList<String> list =  getIntent().getStringArrayListExtra("key");