我正在尝试将ArrayList从我的第一个Activity传递到下一个Activity。基本上,第一个活动解析XML文件并创建一个包含内部对象的ArrayList。我想要做的是将ArrayList发送到我的第二个活动,并在ListView中显示一些对象数据。
我想过用一个意图做这个,但看起来只有原始数据类型通常通过意图传递。这是对的吗?
如果是这样,传递数据的更好的解决方案是什么?当然,Android必须提供能够做这种事情的东西。
非常感谢任何帮助/代码示例..
由于
修改
我通过首先创建和调用intent来解决这个问题,并且只解析我调用的Activity中的XML。这样我就不再需要传递对象了。但对于那些感兴趣的人,您可以阅读有关如何通过活动传递数据的信息here.
答案 0 :(得分:5)
复杂类型可以通过Parcelable传递。这个问题就是一个例子:
答案 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");